tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

nsBaseCommandController.cpp (4543B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 #include "nsBaseCommandController.h"
      8 
      9 #include "mozilla/ControllerCommand.h"
     10 #include "nsControllerCommandTable.h"
     11 #include "nsIWeakReferenceUtils.h"
     12 #include "nsString.h"
     13 
     14 NS_IMPL_ISUPPORTS(nsBaseCommandController, nsIController, nsICommandController,
     15                  nsBaseCommandController);
     16 
     17 nsBaseCommandController::nsBaseCommandController(
     18    nsControllerCommandTable* aControllerCommandTable)
     19    : mCommandTable(aControllerCommandTable) {}
     20 
     21 nsBaseCommandController::~nsBaseCommandController() = default;
     22 
     23 /* =======================================================================
     24 * nsIController
     25 * ======================================================================= */
     26 
     27 NS_IMETHODIMP
     28 nsBaseCommandController::IsCommandEnabled(const char* aCommand, bool* aResult) {
     29  NS_ENSURE_ARG_POINTER(aCommand);
     30  NS_ENSURE_ARG_POINTER(aResult);
     31  NS_ENSURE_STATE(mCommandTable);
     32  nsCOMPtr<nsISupports> context = do_QueryReferent(mContext);
     33  *aResult =
     34      mCommandTable->IsCommandEnabled(nsDependentCString(aCommand), context);
     35  return NS_OK;
     36 }
     37 
     38 NS_IMETHODIMP
     39 nsBaseCommandController::SupportsCommand(const char* aCommand, bool* aResult) {
     40  NS_ENSURE_ARG_POINTER(aCommand);
     41  NS_ENSURE_ARG_POINTER(aResult);
     42  NS_ENSURE_STATE(mCommandTable);
     43  *aResult = mCommandTable->SupportsCommand(nsDependentCString(aCommand));
     44  return NS_OK;
     45 }
     46 
     47 NS_IMETHODIMP
     48 nsBaseCommandController::DoCommand(const char* aCommand) {
     49  NS_ENSURE_ARG_POINTER(aCommand);
     50  NS_ENSURE_STATE(mCommandTable);
     51 
     52  nsCOMPtr<nsISupports> context = do_QueryReferent(mContext);
     53  RefPtr<nsControllerCommandTable> table = mCommandTable;
     54  nsDependentCString command(aCommand);
     55  if (RefPtr handler = table->FindCommandHandler(command)) {
     56    return handler->DoCommand(command, nullptr, context);
     57  }
     58  return NS_OK;
     59 }
     60 
     61 NS_IMETHODIMP
     62 nsBaseCommandController::DoCommandWithParams(const char* aCommand,
     63                                             nsICommandParams* aParams) {
     64  NS_ENSURE_ARG_POINTER(aCommand);
     65  NS_ENSURE_STATE(mCommandTable);
     66 
     67  nsCOMPtr<nsISupports> context = do_QueryReferent(mContext);
     68  RefPtr<nsControllerCommandTable> table = mCommandTable;
     69  nsDependentCString command(aCommand);
     70  if (RefPtr handler = table->FindCommandHandler(command)) {
     71    handler->DoCommand(command, aParams, context);
     72  }
     73  return NS_OK;
     74 }
     75 
     76 NS_IMETHODIMP
     77 nsBaseCommandController::GetCommandStateWithParams(const char* aCommand,
     78                                                   nsICommandParams* aParams) {
     79  NS_ENSURE_ARG_POINTER(aCommand);
     80  NS_ENSURE_STATE(mCommandTable);
     81 
     82  nsCOMPtr<nsISupports> context = do_QueryReferent(mContext);
     83  nsDependentCString command(aCommand);
     84  if (RefPtr handler = mCommandTable->FindCommandHandler(command)) {
     85    handler->GetCommandStateParams(command, aParams, context);
     86  }
     87  return NS_OK;
     88 }
     89 
     90 NS_IMETHODIMP
     91 nsBaseCommandController::OnEvent(const char* aEventName) {
     92  NS_ENSURE_ARG_POINTER(aEventName);
     93  return NS_OK;
     94 }
     95 
     96 NS_IMETHODIMP
     97 nsBaseCommandController::GetSupportedCommands(nsTArray<nsCString>& aCommands) {
     98  NS_ENSURE_STATE(mCommandTable);
     99  mCommandTable->GetSupportedCommands(aCommands);
    100  return NS_OK;
    101 }
    102 
    103 already_AddRefed<nsBaseCommandController>
    104 nsBaseCommandController::CreateWindowController() {
    105  return mozilla::MakeAndAddRef<nsBaseCommandController>(
    106      nsControllerCommandTable::WindowCommandTable());
    107 }
    108 
    109 already_AddRefed<nsBaseCommandController>
    110 nsBaseCommandController::CreateEditorController() {
    111  return mozilla::MakeAndAddRef<nsBaseCommandController>(
    112      nsControllerCommandTable::EditorCommandTable());
    113 }
    114 
    115 already_AddRefed<nsBaseCommandController>
    116 nsBaseCommandController::CreateEditingController() {
    117  return mozilla::MakeAndAddRef<nsBaseCommandController>(
    118      nsControllerCommandTable::EditingCommandTable());
    119 }
    120 
    121 already_AddRefed<nsBaseCommandController>
    122 nsBaseCommandController::CreateHTMLEditorController() {
    123  return mozilla::MakeAndAddRef<nsBaseCommandController>(
    124      nsControllerCommandTable::HTMLEditorCommandTable());
    125 }
    126 
    127 already_AddRefed<nsBaseCommandController>
    128 nsBaseCommandController::CreateHTMLEditorDocStateController() {
    129  return mozilla::MakeAndAddRef<nsBaseCommandController>(
    130      nsControllerCommandTable::HTMLEditorDocStateCommandTable());
    131 }