Ticket #10280: disable_plugin_button.2.diff

File disable_plugin_button.2.diff, 6.5 KB (added by erinn, 6 years ago)
  • PluginProvider.jsm

    old new  
    5353  plugins: null,
    5454
    5555  startup: function PL_startup() {
     56    Services.prefs.addObserver("plugin.disable", this, false);
    5657    Services.obs.addObserver(this, LIST_UPDATED_TOPIC, false);
    5758    Services.obs.addObserver(this, AddonManager.OPTIONS_NOTIFICATION_DISPLAYED, false);
    5859  },
     
    9091      if (this.plugins)
    9192        this.updatePluginList();
    9293      break;
     94    case "nsPref:changed":
     95      var plugin_disable = false;
     96      try {
     97        plugin_disable = Services.prefs.getBoolPref("plugin.disable")
     98      } catch (e) {}
     99      if (!this.plugins)
     100        this.plugins =[];
     101      this.updatePluginList();
     102      Services.obs.notifyObservers(null,
     103                                   "plugin-provider-after-changed-policy",
     104                                   plugin_disable ? "disabled" : "enabled");
     105      break;
    93106    }
    94107  },
    95108
  • extensions.xul

    old new  
    8181    <command id="cmd_findAllUpdates"/>
    8282    <command id="cmd_restartApp"/>
    8383    <command id="cmd_goToDiscoverPane"/>
     84    <command id="cmd_goToEnablePlugins"/>
     85    <command id="cmd_goToDisablePlugins"/>
    8486    <command id="cmd_goToRecentUpdates"/>
    8587    <command id="cmd_goToAvailableUpdates"/>
    8688    <command id="cmd_installFromFile"/>
     
    370372            </vbox>
    371373            <spacer class="alert-spacer-after"/>
    372374          </vbox>
     375          <vbox id="plugin-disabled" class="alert-container"
     376                flex="1" hidden="true">
     377            <spacer class="alert-spacer-before"/>
     378            <vbox class="alert">
     379              <label value="Click to search for installed plugins"/>
     380              <button class="button-enableplugin"
     381                      label="Enable plugins"
     382                      command="cmd_goToEnablePlugins"/>
     383            </vbox>
     384            <spacer class="alert-spacer-after"/>
     385          </vbox>
    373386          <richlistbox id="addon-list" class="list" flex="1"/>
     387          <vbox id="plugin-enabled" class="view-header global-info-container"
     388                hidden="true">
     389            <vbox class="global-info" flex="1"  align="center">
     390              <button class="button-disableplugin"
     391                      label="Disable plugins"
     392                      tooltiptext="Click to stop searching and using plugins"
     393                      command="cmd_goToDisablePlugins"/>
     394              <spacer flex="5000"/> <!-- Necessary to allow the message to wrap -->
     395            </vbox>
     396          </vbox>
    374397        </vbox>
    375398
    376399        <!-- updates view -->
  • extensions.js

    old new  
    754754      }
    755755    },
    756756
     757    cmd_goToEnablePlugins: {
     758      isEnabled: function cmd_goToEnablePlugins_isEnabled() true,
     759      doCommand: function cmd_goToEnablePlugins_doCommand() {
     760        Services.prefs.setBoolPref("plugin.disable", false);
     761      }
     762    },
     763
     764    cmd_goToDisablePlugins: {
     765      isEnabled: function cmd_goToDisablePlugins_isEnabled() true,
     766      doCommand: function cmd_goToDisablePlugins_doCommand() {
     767        Services.prefs.setBoolPref("plugin.disable", true);
     768      }
     769    },
     770
    757771    cmd_goToRecentUpdates: {
    758772      isEnabled: function cmd_goToRecentUpdates_isEnabled() true,
    759773      doCommand: function cmd_goToRecentUpdates_doCommand() {
     
    24052419    this.node = document.getElementById("list-view");
    24062420    this._listBox = document.getElementById("addon-list");
    24072421    this._emptyNotice = document.getElementById("addon-list-empty");
     2422    this._pluginDisabledNotice = document.getElementById("plugin-disabled");
     2423    this._pluginEnabledNotice = document.getElementById("plugin-enabled");
    24082424
    24092425    var self = this;
    24102426    this._listBox.addEventListener("keydown", function listbox_onKeydown(aEvent) {
     
    24412457      for (let installItem of aInstallsList)
    24422458        elements.push(createItem(installItem, true));
    24432459
    2444       self.showEmptyNotice(elements.length == 0);
     2460      var plugin_disable = false;
     2461      try {
     2462        plugin_disable = Services.prefs.getBoolPref("plugin.disable")
     2463      } catch (e) {}
     2464
     2465      var show_notice = true;
     2466      if (self._type == "plugin") {
     2467        if (plugin_disable == true) {
     2468          self.showPluginDisabledNotice(true);
     2469          self.showPluginEnabledNotice(false);
     2470          show_notice = false;
     2471        } else { 
     2472          self.showPluginEnabledNotice(true);
     2473          self.showPluginDisabledNotice(false);
     2474        }
     2475      }
     2476      if (self._type != "plugin") {
     2477        self.showPluginDisabledNotice(false);
     2478        self.showPluginEnabledNotice(false);
     2479      }
     2480      if (show_notice == true)
     2481        self.showEmptyNotice(elements.length == 0);
    24452482      if (elements.length > 0) {
    24462483        sortElements(elements, ["uiState", "name"], true);
    24472484        for (let element of elements)
     
    24512488      gEventManager.registerInstallListener(self);
    24522489      gViewController.updateCommands();
    24532490      gViewController.notifyViewChanged();
     2491
     2492      if (self._type == "plugin")
     2493        Services.obs.addObserver(self, "plugin-provider-after-changed-policy", false);
    24542494    });
    24552495  },
    24562496
    24572497  hide: function gListView_hide() {
    24582498    gEventManager.unregisterInstallListener(this);
    24592499    doPendingUninstalls(this._listBox);
     2500    if (this._type == "plugin")
     2501      Services.obs.removeObserver(this, "plugin-provider-after-changed-policy");
     2502  },
     2503
     2504  observe: function(aSubject, aTopic, aData) {
     2505    if (this._type != "plugin")
     2506      return;
     2507    switch (aTopic) {
     2508    case "plugin-provider-after-changed-policy":
     2509      var show_notice = true;
     2510      var plugin_policy = aData;
     2511
     2512      if (plugin_policy == "disabled") {
     2513        this.showPluginDisabledNotice(true);
     2514        this.showPluginEnabledNotice(false);
     2515        show_notice = false;
     2516      } else { 
     2517        this.showPluginEnabledNotice(true);
     2518        this.showPluginDisabledNotice(false);
     2519      }
     2520      if (show_notice == true)
     2521        this.showEmptyNotice(this._listBox.itemCount == 0);
     2522    }
    24602523  },
    24612524
    24622525  showEmptyNotice: function gListView_showEmptyNotice(aShow) {
    24632526    this._emptyNotice.hidden = !aShow;
    24642527  },
    24652528
     2529  showPluginDisabledNotice: function gListView_showPluginDisabledNotice(aShow) {
     2530    this._pluginDisabledNotice.hidden = !aShow;
     2531  },
     2532
     2533  showPluginEnabledNotice: function gListView_showPluginEnabledNotice(aShow) {
     2534    this._pluginEnabledNotice.hidden = !aShow;
     2535  },
     2536
    24662537  onSortChanged: function gListView_onSortChanged(aSortBy, aAscending) {
    24672538    sortList(this._listBox, aSortBy, aAscending);
    24682539  },