editor/libeditor/base/nsEditorController.cpp

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     2 /* This Source Code Form is subject to the terms of the Mozilla Public
     3  * License, v. 2.0. If a copy of the MPL was not distributed with this
     4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     6 #include "mozilla/mozalloc.h"
     7 #include "nsDebug.h"
     8 #include "nsEditorCommands.h"
     9 #include "nsEditorController.h"
    10 #include "nsError.h"
    11 #include "nsIControllerCommandTable.h"
    13 class nsIControllerCommand;
    17 #define NS_REGISTER_ONE_COMMAND(_cmdClass, _cmdName)                                      \
    18   {                                                                                       \
    19     _cmdClass* theCmd = new _cmdClass();                                                  \
    20     NS_ENSURE_TRUE(theCmd, NS_ERROR_OUT_OF_MEMORY);                                       \
    21     inCommandTable->RegisterCommand(_cmdName,                                             \
    22                                    static_cast<nsIControllerCommand *>(theCmd));          \
    23   }
    25 #define NS_REGISTER_FIRST_COMMAND(_cmdClass, _cmdName)                                    \
    26   {                                                                                       \
    27     _cmdClass* theCmd = new _cmdClass();                                                  \
    28     NS_ENSURE_TRUE(theCmd, NS_ERROR_OUT_OF_MEMORY);                                       \
    29     inCommandTable->RegisterCommand(_cmdName,                                             \
    30                                    static_cast<nsIControllerCommand *>(theCmd));
    32 #define NS_REGISTER_NEXT_COMMAND(_cmdClass, _cmdName)                                     \
    33     inCommandTable->RegisterCommand(_cmdName,                                             \
    34                                    static_cast<nsIControllerCommand *>(theCmd));
    36 #define NS_REGISTER_LAST_COMMAND(_cmdClass, _cmdName)                                     \
    37     inCommandTable->RegisterCommand(_cmdName,                                             \
    38                                    static_cast<nsIControllerCommand *>(theCmd));          \
    39   }
    42 // static
    43 nsresult nsEditorController::RegisterEditingCommands(nsIControllerCommandTable *inCommandTable)
    44 {
    45   // now register all our commands
    46   // These are commands that will be used in text widgets, and in composer
    48   NS_REGISTER_ONE_COMMAND(nsUndoCommand, "cmd_undo");
    49   NS_REGISTER_ONE_COMMAND(nsRedoCommand, "cmd_redo");
    50   NS_REGISTER_ONE_COMMAND(nsClearUndoCommand, "cmd_clearUndo");
    52   NS_REGISTER_ONE_COMMAND(nsCutCommand, "cmd_cut");
    53   NS_REGISTER_ONE_COMMAND(nsCutOrDeleteCommand, "cmd_cutOrDelete");
    54   NS_REGISTER_ONE_COMMAND(nsCopyCommand, "cmd_copy");
    55   NS_REGISTER_ONE_COMMAND(nsCopyOrDeleteCommand, "cmd_copyOrDelete");
    56   NS_REGISTER_ONE_COMMAND(nsSelectAllCommand, "cmd_selectAll");
    58   NS_REGISTER_ONE_COMMAND(nsPasteCommand, "cmd_paste");
    59   NS_REGISTER_ONE_COMMAND(nsPasteTransferableCommand, "cmd_pasteTransferable");
    61   NS_REGISTER_ONE_COMMAND(nsSwitchTextDirectionCommand, "cmd_switchTextDirection");
    63   NS_REGISTER_FIRST_COMMAND(nsDeleteCommand, "cmd_delete");
    64   NS_REGISTER_NEXT_COMMAND(nsDeleteCommand, "cmd_deleteCharBackward");
    65   NS_REGISTER_NEXT_COMMAND(nsDeleteCommand, "cmd_deleteCharForward");
    66   NS_REGISTER_NEXT_COMMAND(nsDeleteCommand, "cmd_deleteWordBackward");
    67   NS_REGISTER_NEXT_COMMAND(nsDeleteCommand, "cmd_deleteWordForward");
    68   NS_REGISTER_NEXT_COMMAND(nsDeleteCommand, "cmd_deleteToBeginningOfLine");
    69   NS_REGISTER_LAST_COMMAND(nsDeleteCommand, "cmd_deleteToEndOfLine");
    71   // Insert content
    72   NS_REGISTER_ONE_COMMAND(nsInsertPlaintextCommand, "cmd_insertText");
    73   NS_REGISTER_ONE_COMMAND(nsPasteQuotationCommand,  "cmd_pasteQuote");
    75   return NS_OK;
    76 }
    79 // static
    80 nsresult nsEditorController::RegisterEditorCommands(nsIControllerCommandTable *inCommandTable)
    81 {
    82   // These are commands that will be used in text widgets only.
    84   NS_REGISTER_FIRST_COMMAND(nsSelectionMoveCommands, "cmd_scrollTop");
    85   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_scrollBottom");
    86   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_moveTop");
    87   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_moveBottom");
    88   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectTop");
    89   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectBottom");
    90   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_lineNext");
    91   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_linePrevious");
    92   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectLineNext");
    93   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectLinePrevious");
    94   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_charPrevious");
    95   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_charNext");
    96   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectCharPrevious");
    97   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectCharNext");
    98   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_beginLine");
    99   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_endLine");
   100   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectBeginLine");
   101   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectEndLine");
   102   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_wordPrevious");
   103   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_wordNext");
   104   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectWordPrevious");
   105   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectWordNext");
   106   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_scrollPageUp");
   107   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_scrollPageDown");
   108   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_scrollLineUp");
   109   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_scrollLineDown");
   110   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_movePageUp");
   111   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_movePageDown");
   112   NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectPageUp");
   113   NS_REGISTER_LAST_COMMAND(nsSelectionMoveCommands, "cmd_selectPageDown");
   115   return NS_OK;
   116 }

mercurial