merge b2g-inbound to mozilla-central a=merge

This commit is contained in:
Carsten "Tomcat" Book 2014-11-28 13:44:29 +01:00
commit 1c98ad6726
22 changed files with 283 additions and 150 deletions

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="3ab0d9c70f0b2e1ededc679112c392303f037361">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="1fff49c664f905f11a86426a9835e6df6b58e825"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="7cc460af0f6f491d1afa6b6043cdea5025f0e15f"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="50ad16a280fe9cfa0716f8c6ba16afdf7f266b49"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
@ -116,8 +116,10 @@
<project name="platform_prebuilts_qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="c24c8871173bf6aedcf236cab075edf092a7015c"/>
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="cfcef469537869947abb9aa1d656774cc2678d4c"/>
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="5a48c04c4bb5f079bc757e29864a42427378e051"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="449d3b2b2a0c87be2133deb72f2a8e939e33305d"/>
<project name="platform/system/extras" path="system/extras" revision="10e78a05252b3de785f88c2d0b9ea8a428009c50"/>
<project name="platform/system/media" path="system/media" revision="7ff72c2ea2496fa50b5e8a915e56e901c3ccd240"/>
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="fe95bc6f83af5c18a73aa86c96e7fa7f79b91477"/>
<project name="platform/system/netd" path="system/netd" revision="3ae56364946d4a5bf5a5f83f12f9a45a30398e33"/>
<project name="platform/system/security" path="system/security" revision="ee8068b9e7bfb2770635062fc9c2035be2142bd8"/>
<project name="platform/system/vold" path="system/vold" revision="2e43efe1b30d0b98574d293059556aebd2f46454"/>

View File

@ -19,7 +19,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="1fff49c664f905f11a86426a9835e6df6b58e825"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="7cc460af0f6f491d1afa6b6043cdea5025f0e15f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="50ad16a280fe9cfa0716f8c6ba16afdf7f266b49"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="d5d3f93914558b6f168447b805cd799c8233e300"/>

View File

@ -17,7 +17,7 @@
</project>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="1fff49c664f905f11a86426a9835e6df6b58e825"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="7cc460af0f6f491d1afa6b6043cdea5025f0e15f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="50ad16a280fe9cfa0716f8c6ba16afdf7f266b49"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="6499615ecece69e726657dc5caaeefa05fbb66bf"/>
@ -118,8 +118,10 @@
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="842e33e43a55ea44833b9e23e4d180fa17c843af"/>
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="5db24726f0f42124304195a6bdea129039eeeaeb"/>
<project name="platform/system/bluetooth" path="system/bluetooth" revision="930ae098543881f47eac054677726ee4b998b2f8"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="449d3b2b2a0c87be2133deb72f2a8e939e33305d"/>
<project name="platform_system_core" path="system/core" remote="b2g" revision="542d1f59dc331b472307e5bd043101d14d5a3a3e"/>
<project name="platform/system/extras" path="system/extras" revision="18c1180e848e7ab8691940481f5c1c8d22c37b3e"/>
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="fe95bc6f83af5c18a73aa86c96e7fa7f79b91477"/>
<project name="platform/system/media" path="system/media" revision="d90b836f66bf1d9627886c96f3a2d9c3007fbb80"/>
<project name="platform/system/netd" path="system/netd" revision="56112dd7b811301b718d0643a82fd5cac9522073"/>
<project name="platform/system/security" path="system/security" revision="f48ff68fedbcdc12b570b7699745abb6e7574907"/>

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="3ab0d9c70f0b2e1ededc679112c392303f037361">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="1fff49c664f905f11a86426a9835e6df6b58e825"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="7cc460af0f6f491d1afa6b6043cdea5025f0e15f"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="50ad16a280fe9cfa0716f8c6ba16afdf7f266b49"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
@ -116,8 +116,10 @@
<project name="platform_prebuilts_qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="c24c8871173bf6aedcf236cab075edf092a7015c"/>
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="b562b01c93de9578d5db537b6a602a38e1aaa0ce"/>
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="387f03e815f57d536dd922706db1622bddba8d81"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="449d3b2b2a0c87be2133deb72f2a8e939e33305d"/>
<project name="platform/system/extras" path="system/extras" revision="5356165f67f4a81c2ef28671c13697f1657590df"/>
<project name="platform/system/media" path="system/media" revision="be0e2fe59a8043fa5200f75697df9220a99abe9d"/>
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="fe95bc6f83af5c18a73aa86c96e7fa7f79b91477"/>
<project name="platform/system/netd" path="system/netd" revision="36704b0da24debcab8090156568ac236315036bb"/>
<project name="platform/system/security" path="system/security" revision="583374f69f531ba68fc3dcbff1f74893d2a96406"/>
<project name="platform/system/vold" path="system/vold" revision="d4455b8cf361f8353e8aebac15ffd64b4aedd2b9"/>

View File

@ -19,7 +19,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="1fff49c664f905f11a86426a9835e6df6b58e825"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="7cc460af0f6f491d1afa6b6043cdea5025f0e15f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="50ad16a280fe9cfa0716f8c6ba16afdf7f266b49"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="d5d3f93914558b6f168447b805cd799c8233e300"/>

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="3ab0d9c70f0b2e1ededc679112c392303f037361">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="1fff49c664f905f11a86426a9835e6df6b58e825"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="7cc460af0f6f491d1afa6b6043cdea5025f0e15f"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="50ad16a280fe9cfa0716f8c6ba16afdf7f266b49"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
@ -116,8 +116,10 @@
<project name="platform_prebuilts_qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="c24c8871173bf6aedcf236cab075edf092a7015c"/>
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="69d524e80cdf3981006627c65ac85f3a871238a3"/>
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="5a48c04c4bb5f079bc757e29864a42427378e051"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="449d3b2b2a0c87be2133deb72f2a8e939e33305d"/>
<project name="platform/system/extras" path="system/extras" revision="576f57b6510de59c08568b53c0fb60588be8689e"/>
<project name="platform/system/media" path="system/media" revision="20c2fb4c896aa59f2e8379d755f439dc59a5cf9b"/>
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="fe95bc6f83af5c18a73aa86c96e7fa7f79b91477"/>
<project name="platform/system/netd" path="system/netd" revision="a6531f7befb49b1c81bc0de7e51c5482b308e1c5"/>
<project name="platform/system/security" path="system/security" revision="ee8068b9e7bfb2770635062fc9c2035be2142bd8"/>
<project name="platform/system/vold" path="system/vold" revision="42fa2a0f14f965970a4b629a176bbd2666edf017"/>

View File

@ -17,7 +17,7 @@
</project>
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="1fff49c664f905f11a86426a9835e6df6b58e825"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="7cc460af0f6f491d1afa6b6043cdea5025f0e15f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="50ad16a280fe9cfa0716f8c6ba16afdf7f266b49"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="6499615ecece69e726657dc5caaeefa05fbb66bf"/>

View File

@ -4,6 +4,6 @@
"remote": "",
"branch": ""
},
"revision": "415520315b048f40979e9bac344bec99e18df901",
"revision": "eb65c4355e0a16dc5cd203c5c007fd7e3bf0e4b2",
"repo_path": "integration/gaia-central"
}

View File

@ -17,7 +17,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="1fff49c664f905f11a86426a9835e6df6b58e825"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="7cc460af0f6f491d1afa6b6043cdea5025f0e15f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="50ad16a280fe9cfa0716f8c6ba16afdf7f266b49"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>

View File

@ -15,7 +15,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="1fff49c664f905f11a86426a9835e6df6b58e825"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="7cc460af0f6f491d1afa6b6043cdea5025f0e15f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="50ad16a280fe9cfa0716f8c6ba16afdf7f266b49"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>

View File

@ -17,7 +17,7 @@
</project>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="1fff49c664f905f11a86426a9835e6df6b58e825"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="7cc460af0f6f491d1afa6b6043cdea5025f0e15f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="50ad16a280fe9cfa0716f8c6ba16afdf7f266b49"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="6499615ecece69e726657dc5caaeefa05fbb66bf"/>
@ -118,8 +118,10 @@
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="842e33e43a55ea44833b9e23e4d180fa17c843af"/>
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="5db24726f0f42124304195a6bdea129039eeeaeb"/>
<project name="platform/system/bluetooth" path="system/bluetooth" revision="930ae098543881f47eac054677726ee4b998b2f8"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="449d3b2b2a0c87be2133deb72f2a8e939e33305d"/>
<project name="platform_system_core" path="system/core" remote="b2g" revision="542d1f59dc331b472307e5bd043101d14d5a3a3e"/>
<project name="platform/system/extras" path="system/extras" revision="18c1180e848e7ab8691940481f5c1c8d22c37b3e"/>
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="fe95bc6f83af5c18a73aa86c96e7fa7f79b91477"/>
<project name="platform/system/media" path="system/media" revision="d90b836f66bf1d9627886c96f3a2d9c3007fbb80"/>
<project name="platform/system/netd" path="system/netd" revision="56112dd7b811301b718d0643a82fd5cac9522073"/>
<project name="platform/system/security" path="system/security" revision="f48ff68fedbcdc12b570b7699745abb6e7574907"/>

View File

@ -17,7 +17,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="1fff49c664f905f11a86426a9835e6df6b58e825"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="7cc460af0f6f491d1afa6b6043cdea5025f0e15f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="50ad16a280fe9cfa0716f8c6ba16afdf7f266b49"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>

View File

@ -29,6 +29,7 @@
#include "nsIClipboard.h"
#include "mozilla/Attributes.h"
#include "mozilla/BasicEvents.h"
#include "mozilla/dom/Selection.h"
#include "nsIClipboardDragDropHooks.h"
#include "nsIClipboardDragDropHookList.h"
@ -482,7 +483,8 @@ nsClipboardCommand::IsCommandEnabled(const char* aCommandName, nsISupports *aCon
NS_ENSURE_ARG_POINTER(outCmdEnabled);
*outCmdEnabled = false;
if (strcmp(aCommandName, "cmd_copy"))
if (strcmp(aCommandName, "cmd_copy") &&
strcmp(aCommandName, "cmd_copyAndCollapseToEnd"))
return NS_OK;
nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aContext);
@ -496,7 +498,8 @@ nsClipboardCommand::IsCommandEnabled(const char* aCommandName, nsISupports *aCon
nsresult
nsClipboardCommand::DoCommand(const char *aCommandName, nsISupports *aContext)
{
if (strcmp(aCommandName, "cmd_copy"))
if (strcmp(aCommandName, "cmd_copy") &&
strcmp(aCommandName, "cmd_copyAndCollapseToEnd"))
return NS_OK;
nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aContext);
@ -509,6 +512,14 @@ nsClipboardCommand::DoCommand(const char *aCommandName, nsISupports *aContext)
NS_ENSURE_TRUE(presShell, NS_ERROR_FAILURE);
nsCopySupport::FireClipboardEvent(NS_COPY, nsIClipboard::kGlobalClipboard, presShell, nullptr);
if (!strcmp(aCommandName, "cmd_copyAndCollapseToEnd")) {
dom::Selection *sel =
presShell->GetCurrentSelection(nsISelectionController::SELECTION_NORMAL);
NS_ENSURE_TRUE(sel, NS_ERROR_FAILURE);
sel->CollapseToEnd();
}
return NS_OK;
}
@ -1045,6 +1056,7 @@ nsWindowCommandRegistration::RegisterWindowCommands(
NS_REGISTER_ONE_COMMAND(nsClipboardCommand, "cmd_cut");
NS_REGISTER_ONE_COMMAND(nsClipboardCommand, "cmd_copy");
NS_REGISTER_ONE_COMMAND(nsClipboardCommand, "cmd_copyAndCollapseToEnd");
NS_REGISTER_ONE_COMMAND(nsClipboardCommand, "cmd_paste");
NS_REGISTER_ONE_COMMAND(nsClipboardCopyLinkCommand, "cmd_copyLink");
NS_REGISTER_FIRST_COMMAND(nsClipboardImageCommands, sCopyImageLocationString);

View File

@ -59,7 +59,7 @@ const OBSERVED_EVENTS = [
const COMMAND_MAP = {
'cut': 'cmd_cut',
'copy': 'cmd_copy',
'copy': 'cmd_copyAndCollapseToEnd',
'paste': 'cmd_paste',
'selectall': 'cmd_selectAll'
};

View File

@ -190,6 +190,7 @@ function testPaste1(e) {
// Then paste it to child side.
copyToClipboard(pasteData);
doCommand('selectall');
doCommand("paste");
SimpleTest.executeSoon(function() { testPaste2(e); });
}

View File

@ -1936,7 +1936,9 @@ RadioInterface.prototype = {
case "networkinfochanged":
gMobileConnectionService.notifyNetworkInfoChanged(this.clientId,
message);
connHandler.updateRILNetworkInterface();
if (message[RIL.NETWORK_INFO_DATA_REGISTRATION_STATE]) {
connHandler.updateRILNetworkInterface();
}
break;
case "networkselectionmodechange":
gMobileConnectionService.notifyNetworkSelectModeChanged(this.clientId,

View File

@ -3,7 +3,6 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "mozFlushType.h"
#include "mozilla/ArrayUtils.h"
#include "mozilla/Assertions.h"
@ -28,27 +27,21 @@
class nsISupports;
#define STATE_ENABLED "state_enabled"
#define STATE_ENABLED "state_enabled"
#define STATE_DATA "state_data"
nsBaseEditorCommand::nsBaseEditorCommand()
{
}
nsBaseEditorCommand::nsBaseEditorCommand() {}
NS_IMPL_ISUPPORTS(nsBaseEditorCommand, nsIControllerCommand)
NS_IMETHODIMP
nsUndoCommand::IsCommandEnabled(const char * aCommandName,
nsISupports *aCommandRefCon,
nsUndoCommand::IsCommandEnabled(const char *aCommandName,
nsISupports *aCommandRefCon,
bool *outCmdEnabled)
{
NS_ENSURE_ARG_POINTER(outCmdEnabled);
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
if (editor)
{
if (editor) {
bool isEnabled, isEditable = false;
nsresult rv = editor->GetIsSelectionEditable(&isEditable);
NS_ENSURE_SUCCESS(rv, rv);
@ -60,18 +53,17 @@ nsUndoCommand::IsCommandEnabled(const char * aCommandName,
return NS_OK;
}
NS_IMETHODIMP
nsUndoCommand::DoCommand(const char *aCommandName, nsISupports *aCommandRefCon)
{
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
if (editor)
return editor->Undo(1);
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
NS_IMETHODIMP
nsUndoCommand::DoCommandParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
@ -79,25 +71,24 @@ nsUndoCommand::DoCommandParams(const char *aCommandName,
return DoCommand(aCommandName, aCommandRefCon);
}
NS_IMETHODIMP
NS_IMETHODIMP
nsUndoCommand::GetCommandStateParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
{
bool canUndo;
IsCommandEnabled(aCommandName, aCommandRefCon, &canUndo);
return aParams->SetBooleanValue(STATE_ENABLED,canUndo);
return aParams->SetBooleanValue(STATE_ENABLED, canUndo);
}
NS_IMETHODIMP
nsRedoCommand::IsCommandEnabled(const char * aCommandName,
nsRedoCommand::IsCommandEnabled(const char *aCommandName,
nsISupports *aCommandRefCon,
bool *outCmdEnabled)
{
NS_ENSURE_ARG_POINTER(outCmdEnabled);
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
if (editor)
{
if (editor) {
bool isEnabled, isEditable = false;
nsresult rv = editor->GetIsSelectionEditable(&isEditable);
NS_ENSURE_SUCCESS(rv, rv);
@ -109,18 +100,17 @@ nsRedoCommand::IsCommandEnabled(const char * aCommandName,
return NS_OK;
}
NS_IMETHODIMP
nsRedoCommand::DoCommand(const char *aCommandName, nsISupports *aCommandRefCon)
{
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
if (editor)
return editor->Redo(1);
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
NS_IMETHODIMP
nsRedoCommand::DoCommandParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
@ -128,20 +118,20 @@ nsRedoCommand::DoCommandParams(const char *aCommandName,
return DoCommand(aCommandName, aCommandRefCon);
}
NS_IMETHODIMP
NS_IMETHODIMP
nsRedoCommand::GetCommandStateParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
{
bool canUndo;
IsCommandEnabled(aCommandName, aCommandRefCon, &canUndo);
return aParams->SetBooleanValue(STATE_ENABLED,canUndo);
return aParams->SetBooleanValue(STATE_ENABLED, canUndo);
}
NS_IMETHODIMP
nsClearUndoCommand::IsCommandEnabled(const char * aCommandName,
nsClearUndoCommand::IsCommandEnabled(const char *aCommandName,
nsISupports *refCon, bool *outCmdEnabled)
{
{
NS_ENSURE_ARG_POINTER(outCmdEnabled);
nsCOMPtr<nsIEditor> editor = do_QueryInterface(refCon);
if (editor)
@ -150,51 +140,48 @@ nsClearUndoCommand::IsCommandEnabled(const char * aCommandName,
*outCmdEnabled = false;
return NS_OK;
}
NS_IMETHODIMP
nsClearUndoCommand::DoCommand(const char *aCommandName, nsISupports *refCon)
{
{
nsCOMPtr<nsIEditor> editor = do_QueryInterface(refCon);
NS_ENSURE_TRUE(editor, NS_ERROR_NOT_IMPLEMENTED);
editor->EnableUndo(false); // Turning off undo clears undo/redo stacks.
editor->EnableUndo(true); // This re-enables undo/redo.
editor->EnableUndo(false); // Turning off undo clears undo/redo stacks.
editor->EnableUndo(true); // This re-enables undo/redo.
return NS_OK;
}
NS_IMETHODIMP
NS_IMETHODIMP
nsClearUndoCommand::DoCommandParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *refCon)
{
return DoCommand(aCommandName, refCon);
}
NS_IMETHODIMP
NS_IMETHODIMP
nsClearUndoCommand::GetCommandStateParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *refCon)
{
{
NS_ENSURE_ARG_POINTER(aParams);
bool enabled;
nsresult rv = IsCommandEnabled(aCommandName, refCon, &enabled);
NS_ENSURE_SUCCESS(rv, rv);
return aParams->SetBooleanValue(STATE_ENABLED, enabled);
}
NS_IMETHODIMP
nsCutCommand::IsCommandEnabled(const char * aCommandName,
nsISupports *aCommandRefCon,
bool *outCmdEnabled)
nsCutCommand::IsCommandEnabled(const char *aCommandName,
nsISupports *aCommandRefCon, bool *outCmdEnabled)
{
NS_ENSURE_ARG_POINTER(outCmdEnabled);
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
if (editor)
{
if (editor) {
bool isEditable = false;
nsresult rv = editor->GetIsSelectionEditable(&isEditable);
NS_ENSURE_SUCCESS(rv, rv);
@ -206,18 +193,17 @@ nsCutCommand::IsCommandEnabled(const char * aCommandName,
return NS_OK;
}
NS_IMETHODIMP
nsCutCommand::DoCommand(const char *aCommandName, nsISupports *aCommandRefCon)
{
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
if (editor)
return editor->Cut();
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
NS_IMETHODIMP
nsCutCommand::DoCommandParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
@ -225,19 +211,18 @@ nsCutCommand::DoCommandParams(const char *aCommandName,
return DoCommand(aCommandName, aCommandRefCon);
}
NS_IMETHODIMP
NS_IMETHODIMP
nsCutCommand::GetCommandStateParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
{
bool canUndo;
IsCommandEnabled(aCommandName, aCommandRefCon, &canUndo);
return aParams->SetBooleanValue(STATE_ENABLED,canUndo);
return aParams->SetBooleanValue(STATE_ENABLED, canUndo);
}
NS_IMETHODIMP
nsCutOrDeleteCommand::IsCommandEnabled(const char * aCommandName,
nsCutOrDeleteCommand::IsCommandEnabled(const char *aCommandName,
nsISupports *aCommandRefCon,
bool *outCmdEnabled)
{
@ -250,14 +235,12 @@ nsCutOrDeleteCommand::IsCommandEnabled(const char * aCommandName,
return NS_OK;
}
NS_IMETHODIMP
nsCutOrDeleteCommand::DoCommand(const char *aCommandName,
nsISupports *aCommandRefCon)
{
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
if (editor)
{
if (editor) {
nsCOMPtr<nsISelection> selection;
nsresult rv = editor->GetSelection(getter_AddRefs(selection));
if (NS_SUCCEEDED(rv) && selection && selection->Collapsed()) {
@ -265,11 +248,11 @@ nsCutOrDeleteCommand::DoCommand(const char *aCommandName,
}
return editor->Cut();
}
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
NS_IMETHODIMP
nsCutOrDeleteCommand::DoCommandParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
@ -277,18 +260,18 @@ nsCutOrDeleteCommand::DoCommandParams(const char *aCommandName,
return DoCommand(aCommandName, aCommandRefCon);
}
NS_IMETHODIMP
NS_IMETHODIMP
nsCutOrDeleteCommand::GetCommandStateParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
{
bool canUndo;
IsCommandEnabled(aCommandName, aCommandRefCon, &canUndo);
return aParams->SetBooleanValue(STATE_ENABLED,canUndo);
return aParams->SetBooleanValue(STATE_ENABLED, canUndo);
}
NS_IMETHODIMP
nsCopyCommand::IsCommandEnabled(const char * aCommandName,
nsCopyCommand::IsCommandEnabled(const char *aCommandName,
nsISupports *aCommandRefCon,
bool *outCmdEnabled)
{
@ -301,18 +284,17 @@ nsCopyCommand::IsCommandEnabled(const char * aCommandName,
return NS_OK;
}
NS_IMETHODIMP
nsCopyCommand::DoCommand(const char *aCommandName, nsISupports *aCommandRefCon)
{
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
if (editor)
return editor->Copy();
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
NS_IMETHODIMP
nsCopyCommand::DoCommandParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
@ -320,18 +302,18 @@ nsCopyCommand::DoCommandParams(const char *aCommandName,
return DoCommand(aCommandName, aCommandRefCon);
}
NS_IMETHODIMP
NS_IMETHODIMP
nsCopyCommand::GetCommandStateParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
{
bool canUndo;
IsCommandEnabled(aCommandName, aCommandRefCon, &canUndo);
return aParams->SetBooleanValue(STATE_ENABLED,canUndo);
return aParams->SetBooleanValue(STATE_ENABLED, canUndo);
}
NS_IMETHODIMP
nsCopyOrDeleteCommand::IsCommandEnabled(const char * aCommandName,
nsCopyOrDeleteCommand::IsCommandEnabled(const char *aCommandName,
nsISupports *aCommandRefCon,
bool *outCmdEnabled)
{
@ -344,14 +326,12 @@ nsCopyOrDeleteCommand::IsCommandEnabled(const char * aCommandName,
return NS_OK;
}
NS_IMETHODIMP
nsCopyOrDeleteCommand::DoCommand(const char *aCommandName,
nsISupports *aCommandRefCon)
{
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
if (editor)
{
if (editor) {
nsCOMPtr<nsISelection> selection;
nsresult rv = editor->GetSelection(getter_AddRefs(selection));
if (NS_SUCCEEDED(rv) && selection && selection->Collapsed()) {
@ -359,11 +339,11 @@ nsCopyOrDeleteCommand::DoCommand(const char *aCommandName,
}
return editor->Copy();
}
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
NS_IMETHODIMP
nsCopyOrDeleteCommand::DoCommandParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
@ -371,14 +351,68 @@ nsCopyOrDeleteCommand::DoCommandParams(const char *aCommandName,
return DoCommand(aCommandName, aCommandRefCon);
}
NS_IMETHODIMP
NS_IMETHODIMP
nsCopyOrDeleteCommand::GetCommandStateParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
{
bool canUndo;
IsCommandEnabled(aCommandName, aCommandRefCon, &canUndo);
return aParams->SetBooleanValue(STATE_ENABLED,canUndo);
return aParams->SetBooleanValue(STATE_ENABLED, canUndo);
}
NS_IMETHODIMP
nsCopyAndCollapseToEndCommand::IsCommandEnabled(const char *aCommandName,
nsISupports *aCommandRefCon,
bool *outCmdEnabled)
{
NS_ENSURE_ARG_POINTER(outCmdEnabled);
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
if (editor)
return editor->CanCopy(outCmdEnabled);
*outCmdEnabled = false;
return NS_OK;
}
NS_IMETHODIMP
nsCopyAndCollapseToEndCommand::DoCommand(const char *aCommandName,
nsISupports *aCommandRefCon)
{
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
if (editor) {
nsresult rv = editor->Copy();
if (NS_FAILED(rv)) {
return rv;
}
nsCOMPtr<nsISelection> selection;
rv = editor->GetSelection(getter_AddRefs(selection));
if (NS_SUCCEEDED(rv) && selection) {
selection->CollapseToEnd();
}
return rv;
}
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
nsCopyAndCollapseToEndCommand::DoCommandParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
{
return DoCommand(aCommandName, aCommandRefCon);
}
NS_IMETHODIMP
nsCopyAndCollapseToEndCommand::GetCommandStateParams(
const char *aCommandName, nsICommandParams *aParams,
nsISupports *aCommandRefCon)
{
bool canUndo;
IsCommandEnabled(aCommandName, aCommandRefCon, &canUndo);
return aParams->SetBooleanValue(STATE_ENABLED, canUndo);
}
NS_IMETHODIMP
@ -388,8 +422,7 @@ nsPasteCommand::IsCommandEnabled(const char *aCommandName,
{
NS_ENSURE_ARG_POINTER(outCmdEnabled);
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
if (editor)
{
if (editor) {
bool isEditable = false;
nsresult rv = editor->GetIsSelectionEditable(&isEditable);
NS_ENSURE_SUCCESS(rv, rv);
@ -401,17 +434,16 @@ nsPasteCommand::IsCommandEnabled(const char *aCommandName,
return NS_OK;
}
NS_IMETHODIMP
nsPasteCommand::DoCommand(const char *aCommandName, nsISupports *aCommandRefCon)
{
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
NS_ENSURE_TRUE(editor, NS_ERROR_FAILURE);
return editor->Paste(nsIClipboard::kGlobalClipboard);
}
NS_IMETHODIMP
NS_IMETHODIMP
nsPasteCommand::DoCommandParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
@ -419,14 +451,14 @@ nsPasteCommand::DoCommandParams(const char *aCommandName,
return DoCommand(aCommandName, aCommandRefCon);
}
NS_IMETHODIMP
NS_IMETHODIMP
nsPasteCommand::GetCommandStateParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
{
bool canUndo;
IsCommandEnabled(aCommandName, aCommandRefCon, &canUndo);
return aParams->SetBooleanValue(STATE_ENABLED,canUndo);
return aParams->SetBooleanValue(STATE_ENABLED, canUndo);
}
NS_IMETHODIMP
@ -436,8 +468,7 @@ nsPasteTransferableCommand::IsCommandEnabled(const char *aCommandName,
{
NS_ENSURE_ARG_POINTER(outCmdEnabled);
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
if (editor)
{
if (editor) {
bool isEditable = false;
nsresult rv = editor->GetIsSelectionEditable(&isEditable);
NS_ENSURE_SUCCESS(rv, rv);
@ -450,19 +481,20 @@ nsPasteTransferableCommand::IsCommandEnabled(const char *aCommandName,
}
NS_IMETHODIMP
nsPasteTransferableCommand::DoCommand(const char *aCommandName, nsISupports *aCommandRefCon)
nsPasteTransferableCommand::DoCommand(const char *aCommandName,
nsISupports *aCommandRefCon)
{
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
NS_IMETHODIMP
nsPasteTransferableCommand::DoCommandParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
{
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
NS_ENSURE_TRUE(editor, NS_ERROR_FAILURE);
nsCOMPtr<nsISupports> supports;
aParams->GetISupportsValue("transferable", getter_AddRefs(supports));
NS_ENSURE_TRUE(supports, NS_ERROR_FAILURE);
@ -473,7 +505,7 @@ nsPasteTransferableCommand::DoCommandParams(const char *aCommandName,
return editor->PasteTransferable(trans);
}
NS_IMETHODIMP
NS_IMETHODIMP
nsPasteTransferableCommand::GetCommandStateParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
@ -499,8 +531,8 @@ nsPasteTransferableCommand::GetCommandStateParams(const char *aCommandName,
NS_IMETHODIMP
nsSwitchTextDirectionCommand::IsCommandEnabled(const char *aCommandName,
nsISupports *aCommandRefCon,
bool *outCmdEnabled)
nsISupports *aCommandRefCon,
bool *outCmdEnabled)
{
NS_ENSURE_ARG_POINTER(outCmdEnabled);
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
@ -512,7 +544,8 @@ nsSwitchTextDirectionCommand::IsCommandEnabled(const char *aCommandName,
}
NS_IMETHODIMP
nsSwitchTextDirectionCommand::DoCommand(const char *aCommandName, nsISupports *aCommandRefCon)
nsSwitchTextDirectionCommand::DoCommand(const char *aCommandName,
nsISupports *aCommandRefCon)
{
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
NS_ENSURE_TRUE(editor, NS_ERROR_FAILURE);
@ -520,18 +553,18 @@ nsSwitchTextDirectionCommand::DoCommand(const char *aCommandName, nsISupports *a
return editor->SwitchTextDirection();
}
NS_IMETHODIMP
NS_IMETHODIMP
nsSwitchTextDirectionCommand::DoCommandParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
{
return DoCommand(aCommandName, aCommandRefCon);
}
NS_IMETHODIMP
NS_IMETHODIMP
nsSwitchTextDirectionCommand::GetCommandStateParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
{
bool canSwitchTextDirection = true;
IsCommandEnabled(aCommandName, aCommandRefCon, &canSwitchTextDirection);
@ -539,9 +572,9 @@ nsSwitchTextDirectionCommand::GetCommandStateParams(const char *aCommandName,
}
NS_IMETHODIMP
nsDeleteCommand::IsCommandEnabled(const char* aCommandName,
nsISupports* aCommandRefCon,
bool* outCmdEnabled)
nsDeleteCommand::IsCommandEnabled(const char *aCommandName,
nsISupports *aCommandRefCon,
bool *outCmdEnabled)
{
NS_ENSURE_ARG_POINTER(outCmdEnabled);
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
@ -563,10 +596,9 @@ nsDeleteCommand::IsCommandEnabled(const char* aCommandName,
return NS_OK;
}
NS_IMETHODIMP
nsDeleteCommand::DoCommand(const char* aCommandName,
nsISupports* aCommandRefCon)
nsDeleteCommand::DoCommand(const char *aCommandName,
nsISupports *aCommandRefCon)
{
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
NS_ENSURE_TRUE(editor, NS_ERROR_FAILURE);
@ -597,7 +629,7 @@ nsDeleteCommand::DoCommand(const char* aCommandName,
return editor->DeleteSelection(deleteDir, nsIEditor::eStrip);
}
NS_IMETHODIMP
NS_IMETHODIMP
nsDeleteCommand::DoCommandParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
@ -605,18 +637,18 @@ nsDeleteCommand::DoCommandParams(const char *aCommandName,
return DoCommand(aCommandName, aCommandRefCon);
}
NS_IMETHODIMP
NS_IMETHODIMP
nsDeleteCommand::GetCommandStateParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
{
bool canUndo;
IsCommandEnabled(aCommandName, aCommandRefCon, &canUndo);
return aParams->SetBooleanValue(STATE_ENABLED,canUndo);
return aParams->SetBooleanValue(STATE_ENABLED, canUndo);
}
NS_IMETHODIMP
nsSelectAllCommand::IsCommandEnabled(const char * aCommandName,
nsSelectAllCommand::IsCommandEnabled(const char *aCommandName,
nsISupports *aCommandRefCon,
bool *outCmdEnabled)
{
@ -639,7 +671,6 @@ nsSelectAllCommand::IsCommandEnabled(const char * aCommandName,
return rv;
}
NS_IMETHODIMP
nsSelectAllCommand::DoCommand(const char *aCommandName,
nsISupports *aCommandRefCon)
@ -647,11 +678,11 @@ nsSelectAllCommand::DoCommand(const char *aCommandName,
nsCOMPtr<nsIEditor> editor = do_QueryInterface(aCommandRefCon);
if (editor)
return editor->SelectAll();
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
NS_IMETHODIMP
nsSelectAllCommand::DoCommandParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
@ -659,19 +690,18 @@ nsSelectAllCommand::DoCommandParams(const char *aCommandName,
return DoCommand(aCommandName, aCommandRefCon);
}
NS_IMETHODIMP
NS_IMETHODIMP
nsSelectAllCommand::GetCommandStateParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
{
bool canUndo;
IsCommandEnabled(aCommandName, aCommandRefCon, &canUndo);
return aParams->SetBooleanValue(STATE_ENABLED,canUndo);
return aParams->SetBooleanValue(STATE_ENABLED, canUndo);
}
NS_IMETHODIMP
nsSelectionMoveCommands::IsCommandEnabled(const char * aCommandName,
nsSelectionMoveCommands::IsCommandEnabled(const char *aCommandName,
nsISupports *aCommandRefCon,
bool *outCmdEnabled)
{
@ -765,13 +795,13 @@ nsSelectionMoveCommands::DoCommand(const char *aCommandName,
}
nsCOMPtr<nsISelectionController> selCont;
nsresult rv = editor->GetSelectionController(getter_AddRefs(selCont));
nsresult rv = editor->GetSelectionController(getter_AddRefs(selCont));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(selCont, NS_ERROR_FAILURE);
// scroll commands
for (size_t i = 0; i < mozilla::ArrayLength(scrollCommands); i++) {
const ScrollCommand& cmd = scrollCommands[i];
const ScrollCommand &cmd = scrollCommands[i];
if (!nsCRT::strcmp(aCommandName, cmd.reverseScroll)) {
return (selCont->*(cmd.scroll))(false);
} else if (!nsCRT::strcmp(aCommandName, cmd.forwardScroll)) {
@ -781,7 +811,7 @@ nsSelectionMoveCommands::DoCommand(const char *aCommandName,
// caret movement/selection commands
for (size_t i = 0; i < mozilla::ArrayLength(moveCommands); i++) {
const MoveCommand& cmd = moveCommands[i];
const MoveCommand &cmd = moveCommands[i];
if (!nsCRT::strcmp(aCommandName, cmd.reverseMove)) {
return (selCont->*(cmd.move))(false, false);
} else if (!nsCRT::strcmp(aCommandName, cmd.forwardMove)) {
@ -795,7 +825,7 @@ nsSelectionMoveCommands::DoCommand(const char *aCommandName,
// physical-direction movement/selection
for (size_t i = 0; i < mozilla::ArrayLength(physicalCommands); i++) {
const PhysicalCommand& cmd = physicalCommands[i];
const PhysicalCommand &cmd = physicalCommands[i];
if (!nsCRT::strcmp(aCommandName, cmd.move)) {
return selCont->PhysicalMove(cmd.direction, cmd.amount, false);
} else if (!nsCRT::strcmp(aCommandName, cmd.select)) {
@ -806,7 +836,7 @@ nsSelectionMoveCommands::DoCommand(const char *aCommandName,
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
NS_IMETHODIMP
nsSelectionMoveCommands::DoCommandParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
@ -814,20 +844,19 @@ nsSelectionMoveCommands::DoCommandParams(const char *aCommandName,
return DoCommand(aCommandName, aCommandRefCon);
}
NS_IMETHODIMP
NS_IMETHODIMP
nsSelectionMoveCommands::GetCommandStateParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *aCommandRefCon)
{
bool canUndo;
IsCommandEnabled(aCommandName, aCommandRefCon, &canUndo);
return aParams->SetBooleanValue(STATE_ENABLED,canUndo);
return aParams->SetBooleanValue(STATE_ENABLED, canUndo);
}
NS_IMETHODIMP
nsInsertPlaintextCommand::IsCommandEnabled(const char * aCommandName,
nsISupports *refCon,
nsInsertPlaintextCommand::IsCommandEnabled(const char *aCommandName,
nsISupports *refCon,
bool *outCmdEnabled)
{
NS_ENSURE_ARG_POINTER(outCmdEnabled);
@ -839,7 +868,6 @@ nsInsertPlaintextCommand::IsCommandEnabled(const char * aCommandName,
return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP
nsInsertPlaintextCommand::DoCommand(const char *aCommandName,
nsISupports *refCon)
@ -880,16 +908,15 @@ nsInsertPlaintextCommand::GetCommandStateParams(const char *aCommandName,
return aParams->SetBooleanValue(STATE_ENABLED, outCmdEnabled);
}
NS_IMETHODIMP
nsPasteQuotationCommand::IsCommandEnabled(const char * aCommandName,
nsPasteQuotationCommand::IsCommandEnabled(const char *aCommandName,
nsISupports *refCon,
bool *outCmdEnabled)
{
NS_ENSURE_ARG_POINTER(outCmdEnabled);
nsCOMPtr<nsIEditor> editor = do_QueryInterface(refCon);
nsCOMPtr<nsIEditorMailSupport> mailEditor = do_QueryInterface(refCon);
nsCOMPtr<nsIEditorMailSupport> mailEditor = do_QueryInterface(refCon);
if (editor && mailEditor) {
uint32_t flags;
editor->GetFlags(&flags);
@ -901,12 +928,11 @@ nsPasteQuotationCommand::IsCommandEnabled(const char * aCommandName,
return NS_OK;
}
NS_IMETHODIMP
nsPasteQuotationCommand::DoCommand(const char *aCommandName,
nsISupports *refCon)
{
nsCOMPtr<nsIEditorMailSupport> mailEditor = do_QueryInterface(refCon);
nsCOMPtr<nsIEditorMailSupport> mailEditor = do_QueryInterface(refCon);
if (mailEditor)
return mailEditor->PasteAsQuotation(nsIClipboard::kGlobalClipboard);
@ -918,7 +944,7 @@ nsPasteQuotationCommand::DoCommandParams(const char *aCommandName,
nsICommandParams *aParams,
nsISupports *refCon)
{
nsCOMPtr<nsIEditorMailSupport> mailEditor = do_QueryInterface(refCon);
nsCOMPtr<nsIEditorMailSupport> mailEditor = do_QueryInterface(refCon);
if (mailEditor)
return mailEditor->PasteAsQuotation(nsIClipboard::kGlobalClipboard);
@ -931,13 +957,11 @@ nsPasteQuotationCommand::GetCommandStateParams(const char *aCommandName,
nsISupports *refCon)
{
nsCOMPtr<nsIEditor> editor = do_QueryInterface(refCon);
if (editor)
{
if (editor) {
bool enabled = false;
editor->CanPaste(nsIClipboard::kGlobalClipboard, &enabled);
aParams->SetBooleanValue(STATE_ENABLED, enabled);
}
return NS_OK;
}

View File

@ -52,6 +52,7 @@ NS_DECL_EDITOR_COMMAND(nsCutCommand)
NS_DECL_EDITOR_COMMAND(nsCutOrDeleteCommand)
NS_DECL_EDITOR_COMMAND(nsCopyCommand)
NS_DECL_EDITOR_COMMAND(nsCopyOrDeleteCommand)
NS_DECL_EDITOR_COMMAND(nsCopyAndCollapseToEndCommand)
NS_DECL_EDITOR_COMMAND(nsPasteCommand)
NS_DECL_EDITOR_COMMAND(nsPasteTransferableCommand)
NS_DECL_EDITOR_COMMAND(nsSwitchTextDirectionCommand)

View File

@ -53,6 +53,8 @@ nsresult nsEditorController::RegisterEditingCommands(nsIControllerCommandTable *
NS_REGISTER_ONE_COMMAND(nsCutOrDeleteCommand, "cmd_cutOrDelete");
NS_REGISTER_ONE_COMMAND(nsCopyCommand, "cmd_copy");
NS_REGISTER_ONE_COMMAND(nsCopyOrDeleteCommand, "cmd_copyOrDelete");
NS_REGISTER_ONE_COMMAND(nsCopyAndCollapseToEndCommand,
"cmd_copyAndCollapseToEnd");
NS_REGISTER_ONE_COMMAND(nsSelectAllCommand, "cmd_selectAll");
NS_REGISTER_ONE_COMMAND(nsPasteCommand, "cmd_paste");

View File

@ -20,6 +20,7 @@ skip-if = buildapp == 'mulet'
[test_bug830600.html]
[test_bug1053048.html]
[test_bug1102906.html]
[test_bug1101392.html]
[test_composition_event_created_in_chrome.html]
[test_contenteditable_text_input_handling.html]
[test_dragdrop.html]

View File

@ -0,0 +1,77 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1101392
-->
<head>
<meta charset="utf-8">
<title>Test for Bug 1101392</title>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
<script type="application/javascript">
/** Test for Bug 1101392 **/
SimpleTest.waitForExplicitFinish();
SimpleTest.waitForFocus(runTests);
function runCopyCommand(element, compareText, nextTest)
{
element.focus();
if (element.editor) {
var sel = element.editor.selection;
element.select();
} else {
var sel = window.getSelection();
sel.selectAllChildren(element.parentNode);
}
var expectedEndpoint = [
sel.getRangeAt(0).endContainer,
sel.getRangeAt(0).endOffset
];
function checkCollapse() {
is(sel.isCollapsed, true, "collapsed after cmd_copyAndCollapseToEnd");
is(sel.anchorNode, expectedEndpoint[0], "node after cmd_copyAndCollapseToEnd");
is(sel.anchorOffset, expectedEndpoint[1], "offset after cmd_copyAndCollapseToEnd");
nextTest();
}
const kCmd = "cmd_copyAndCollapseToEnd";
var controller = top.document.commandDispatcher
.getControllerForCommand(kCmd);
ok((controller && controller.isCommandEnabled(kCmd)), "have cmd_copyAndCollapseToEnd command");
SimpleTest.waitForClipboard(compareText,
() => { controller.doCommand(kCmd); },
checkCollapse, checkCollapse);
}
function testDiv()
{
var content = document.getElementById("content");
runCopyCommand(content, 'abc', testTextarea);
}
function testTextarea()
{
var textarea = document.getElementById("textarea");
runCopyCommand(textarea, 'def', SimpleTest.finish);
}
function runTests()
{
testDiv();
}
</script>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1101392">Mozilla Bug 1101392</a>
<div><div id="content">abc</div></div>
<textarea id="textarea">def</textarea>
<pre id="test">
</pre>
</body>
</html>

View File

@ -354,7 +354,10 @@ TouchCaret::NotifySelectionChanged(nsIDOMDocument* aDoc, nsISelection* aSel,
// Update touch caret position and visibility.
// Hide touch caret while key event causes selection change.
if (aReason & nsISelectionListener::KEYPRESS_REASON) {
// Also hide touch caret when gecko or javascript collapse the selection.
if (aReason & nsISelectionListener::KEYPRESS_REASON ||
aReason & nsISelectionListener::COLLAPSETOSTART_REASON ||
aReason & nsISelectionListener::COLLAPSETOEND_REASON) {
TOUCHCARET_LOG("KEYPRESS_REASON");
SetVisibility(false);
} else {