Ticket #10280: notify_for_pluginprovider.2.diff

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

    old new  
    5353  plugins: null,
    5454
    5555  startup: function PL_startup() {
     56    Services.obs.addObserver(this, "plugins-policy-changed", false);
    5657    Services.obs.addObserver(this, LIST_UPDATED_TOPIC, false);
    5758    Services.obs.addObserver(this, AddonManager.OPTIONS_NOTIFICATION_DISPLAYED, false);
    5859  },
     
    6566    this.plugins = null;
    6667    Services.obs.removeObserver(this, AddonManager.OPTIONS_NOTIFICATION_DISPLAYED);
    6768    Services.obs.removeObserver(this, LIST_UPDATED_TOPIC);
     69    Services.obs.removeObserver(this, "plugins-policy-changed");
    6870  },
    6971
    7072  observe: function(aSubject, aTopic, aData) {
     
    9092      if (this.plugins)
    9193        this.updatePluginList();
    9294      break;
     95    case "plugins-policy-changed":
     96      var plugin_policy = aData
     97      if (!this.plugins)
     98        this.plugins =[];
     99      this.updatePluginList();
     100      Services.obs.notifyObservers(null,
     101                                   "plugin-provider-after-changed-policy",
     102                                   plugin_policy);
     103      break;
    93104    }
    94105  },
    95106
  • nsPluginHost.cpp

    old new  
    31913191    sInst->Release();
    31923192  }
    31933193  if (!strcmp(NS_PREFBRANCH_PREFCHANGE_TOPIC_ID, aTopic)) {
     3194    NS_ConvertUTF16toUTF8 prefName(someData);
    31943195    mPluginsDisabled = Preferences::GetBool("plugin.disable", false);
    31953196    mPluginsClickToPlay = Preferences::GetBool("plugins.click_to_play", false);
    31963197    // Unload or load plugins as needed
     
    31993200    } else {
    32003201      LoadPlugins();
    32013202    }
     3203    if (prefName.Equals("plugin.disable")) {
     3204      nsCOMPtr<nsIObserverService> obsService =
     3205        mozilla::services::GetObserverService();
     3206      if (obsService) {
     3207        nsAutoString pluginPolicy;
     3208        pluginPolicy = mPluginsDisabled ? NS_LITERAL_STRING("disabled")
     3209                                        : NS_LITERAL_STRING("enabled");
     3210        obsService->NotifyObservers(nullptr, "plugins-policy-changed", pluginPolicy.get());
     3211      }
     3212    }
    32023213  }
    32033214  if (!strcmp("blocklist-updated", aTopic)) {
    32043215    nsPluginTag* plugin = mPlugins;