***
Bug 1514594: Part 3a - Change ChromeUtils.import to return an exports object; not pollute global. r=mccr8
This changes the behavior of ChromeUtils.import() to return an exports object,
rather than a module global, in all cases except when `null` is passed as a
second argument, and changes the default behavior not to pollute the global
scope with the module's exports. Thus, the following code written for the old
model:
ChromeUtils.import("resource://gre/modules/Services.jsm");
is approximately the same as the following, in the new model:
var {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
Since the two behaviors are mutually incompatible, this patch will land with a
scripted rewrite to update all existing callers to use the new model rather
than the old.
***
Bug 1514594: Part 3b - Mass rewrite all JS code to use the new ChromeUtils.import API. rs=Gijs
This was done using the followng script:
https://bitbucket.org/kmaglione/m-c-rewrites/src/tip/processors/cu-import-exports.jsm
***
Bug 1514594: Part 3c - Update ESLint plugin for ChromeUtils.import API changes. r=Standard8
Differential Revision: https://phabricator.services.mozilla.com/D16747
***
Bug 1514594: Part 3d - Remove/fix hundreds of duplicate imports from sync tests. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D16748
***
Bug 1514594: Part 3e - Remove no-op ChromeUtils.import() calls. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D16749
***
Bug 1514594: Part 3f.1 - Cleanup various test corner cases after mass rewrite. r=Gijs
***
Bug 1514594: Part 3f.2 - Cleanup various non-test corner cases after mass rewrite. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D16750
Aside from making things easier for JS callers, this also makes it harder to
accidentally trigger an early load of the service, which can be expensive
during startup.
This also makes a slight change to nsPluginHost to initially preserve the
previous blocklist state when a plugin is updated, to avoid the risk of the
possible additioanl asynchrony unblocking a plugin that should stay blocked.
MozReview-Commit-ID: 4EvIGJ1Ke0Z
Since the user can now block Flash and ask the browser to
remember that decision, the histogram that collects user's choices
on this has to be updated with a fourth option.
MozReview-Commit-ID: J4r6nJIiaeQ
Migrated to simply use PopupNotifications.jsm. Additionally, this
changes the behavior to always have two buttons and a remember
checkbox. When selecting allow with remember, it will behave like
the always allow option previously, but when selecting block with
remember, it will move that page into a quiet mode with respect
to Flash - i.e., no plugin overlays will show anymore, and instead
you will just see the plugin icon in the URL bar, which you can
continue to interact with as before.
MozReview-Commit-ID: EUFlI7nM09t
Most of this is fixing functions that in some cases return a value but then
can also run to completion without returning anything. ESLint 2 catches this
where previous versions didn't. Unless there was an obvious other choice I just
made these functions return undefined at the end which is effectively what
already happens.
MozReview-Commit-ID: DEskVIjiKDM
showNPAPIPluginCrashedNotification was erroneously calling submitGMPCrashReport, and attempted
to call it with arguments that it definitely didn't have (pluginDumpID, browserDumpID). Now
we call submitCrashReport with a runID, as expected.
This patch does the following:
* Has the gPluginHandler tell content processes when a NPAPI plugin crashes
* Introduces PluginCrashReporter, and renames TabCrashReporter.jsm to ContentCrashReporters.jsm.
* Makes gPluginHandler use PluginCrashReporter to submit plugin crashes.
* If a plugin crash report is submitted, puts all visible instances into the submitted state.
* Makes the plugin crashed notification bar work with run IDs.
* Removes event and message listeners in PluginContent when uninitting.
This patch does the following:
* Has the gPluginHandler tell content processes when a NPAPI plugin crashes
* Introduces PluginCrashReporter, and renames TabCrashReporter.jsm to ContentCrashReporters.jsm.
* Makes gPluginHandler use PluginCrashReporter to submit plugin crashes.
* If a plugin crash report is submitted, puts all visible instances into the submitted state.
* Makes the plugin crashed notification bar work with run IDs.
* Removes event and message listeners in PluginContent when uninitting.
Before, we were comparing Principals sent up from PluginContent against the
Principal of the selected browser - this was in order to account for races
(and intermittent oranges) where the browser has moved away from a page before
a CTP message has been received by the parent.
Comparing Principals works beautifully, except in the case of Data URIs, since
Data URIs inherit the Principals of the page they were linked from. That means
that if we're on a page with a link to a Data URI that embeds a plugin, if we
quickly browse to that page and back before a CTP message reaches the parent,
when the CTP message finally arrives, the Principals will match. We solve this
by sending the location as well as the Principal, to do a final comparison if
the Principals do match.
When the PluginRemoved event is fired when changing locations, it's fired
asynchronously such that the document that the plugin belongs to has already
been unloaded. This was causing the hidden plugin notification to appear in
some cases when users browsed away from documents that had hidden plugins
in them. Now we pass the Principal for the unloading document back to the
parent and do a comparison with the current browser Principal to ensure
that they match before showing the hidden plugin notification.