This change adds a new mochitest-only helper called `AppTestDelegate`. This
helper will provide primitives that are not normally available at the toolkit
level.
Each app can implement the `AppUiTestDelegate` API to provide the primitives.
This is done so that we can ensure compatibility of the Extension API across
implementations.
The initial set of APIs is as follows:
```
class TestDelegate {
clickPageAction(window, extensionId);
closePageAction(window, extensionId);
clickBrowserAction(window, extensionId);
closeBrowserAction(window, extensionId);
awaitExtensionPanel(window, extensionId);
// Returns a unique identifier for the tab
openNewForegroundTab(window, url, waitForLoad);
// tabId must be the identifier from openNewForegroundTab
removeTab(tabId);
}
```
Differential Revision: https://phabricator.services.mozilla.com/D99170
This change adds a new mochitest-only helper called `AppTestDelegate`. This
helper will provide primitives that are not normally available at the toolkit
level.
Each app can implement the `AppUiTestDelegate` API to provide the primitives.
This is done so that we can ensure compatibility of the Extension API across
implementations.
The initial set of APIs is as follows:
```
class TestDelegate {
clickPageAction(window, extensionId);
closePageAction(window, extensionId);
clickBrowserAction(window, extensionId);
closeBrowserAction(window, extensionId);
awaitExtensionPanel(window, extensionId);
// Returns a unique identifier for the tab
openNewForegroundTab(window, url, waitForLoad);
// tabId must be the identifier from openNewForegroundTab
removeTab(tabId);
}
```
Differential Revision: https://phabricator.services.mozilla.com/D99170
The main-thread requirements for DXVA appear to have been needed when we initialized a crash guard. We now only run DXVA in the GPU and RDD processes, which don't support crash guards. This removes the main thread dispatch and the crashguard code, and enforces that we're in the GPU/RDD process to init DXVA.
This also removes the DLL blocklist code. This was disabled via pref when in the GPU process, which should be the majority of the time. In rare cases we would have been running DXVA in the RDD process (on older win7 when the GPU process isn't available). In these cases we can just do the same as the GPU process, allowing crashes and recovering from them (and disabling DXVA).
Differential Revision: https://phabricator.services.mozilla.com/D98036
I don't have a crystal clear story of why these timings are different with the
skeleton UI enabled. However, it's not remarkably surprising that it changes the
order of some events during startup which come from the core Windows event loop.
I don't think it's worth diving incredibly deep to understand this - looking at
the profile we still only see one of each of these events.
Differential Revision: https://phabricator.services.mozilla.com/D99111
I don't have a crystal clear story of why these timings are different with the
skeleton UI enabled. However, it's not remarkably surprising that it changes the
order of some events during startup which come from the core Windows event loop.
I don't think it's worth diving incredibly deep to understand this - looking at
the profile we still only see one of each of these events.
Differential Revision: https://phabricator.services.mozilla.com/D99111
The main-thread requirements for DXVA appear to have been needed when we initialized a crash guard. We now only run DXVA in the GPU and RDD processes, which don't support crash guards. This removes the main thread dispatch and the crashguard code, and enforces that we're in the GPU/RDD process to init DXVA.
This also removes the DLL blocklist code. This was disabled via pref when in the GPU process, which should be the majority of the time. In rare cases we would have been running DXVA in the RDD process (on older win7 when the GPU process isn't available). In these cases we can just do the same as the GPU process, allowing crashes and recovering from them (and disabling DXVA).
Differential Revision: https://phabricator.services.mozilla.com/D98036
UPDATED
-------
browser/base/content/test/plugins/browser_CTP_favorfallback.js
Test that plugin fallback behavior is correct.
Updated to reflect that plugins always show "alternate" content, which is either the user fallback of the browser's transparent fallback, regardless of the HTML.
browser/base/content/test/plugins/browser_CTP_outsideScrollArea.js
Test that overlay is visible (in layout sense) only if plugin is partially or completely visible.
Changed to test new fallback behavior where overlay is a hidden element with "blockall" atribute.
browser/base/content/test/plugins/browser_CTP_zoom.js
Test that overlay is present and visible at multiple zoom levels.
Adjusted to work with hidden overlay.
browser/base/content/test/performance/browser_startup_mainthreadio.js
Track IO done at browser startup
Removed `UserPlugins.parent` from list since we no longer scan for plugins.
browser/base/content/test/plugins/browser_bug797677.js
bug 797677
Test that plugin instantiation fails (with PLUGIN_UNSUPPORTED and no console error) when MIME type missing.
Removed the cleanup of (unused) test plugin.
browser/base/content/test/contextMenu/browser_contextmenu.js
Test context menu for many types of elements
Removed plugin element portion.
REMOVED
-------
browser/base/content/test/plugins/browser_CTP_contextmenu.js
Test that the CTP activate action in content menus for plugins works
browser/base/content/test/plugins/browser_CTP_crashreporting.js
Test that plugin crash submissions still work properly after click-to-play activation.
browser/base/content/test/plugins/browser_CTP_drag_drop.js
Test that plugin CTP dialog behaves correctly when dragging tab out of/into a window
browser/base/content/test/plugins/browser_CTP_hide_overlay.js
Test ability to close plugin "overlay" placeholder (the grey lego element)
browser/base/content/test/plugins/browser_CTP_iframe.js
Test that overlay can be interacted with (closed) when in an iframe
browser/base/content/test/plugins/browser_CTP_nonplugins.js
Bug 926605
Says it tests that non-plugin <object> elements don't show CTP but it doesn't. It tests that removing a CTP plugin from a page does not remove CTP dialog (in case, for example, page shows, then quickly removes plugin).
browser/base/content/test/plugins/browser_CTP_overlay_styles.js
Verify that styling on overlay elements, based on sizing, is correct.
browser/base/content/test/plugins/browser_CTP_resize.js
Test that a resize properly updates the overlay styling, which is only visible when large enough.
browser/base/content/test/plugins/browser_CTP_shouldShowOverlay.js
Test that partially obscured plugins show the overlay, properly styled (when they should).
browser/base/content/test/plugins/browser_blocking.js
bug 1129040
Test CTP behavior -- overlay dialog behavior, vulnerable plugin user approval, plugin's infoURL, etc.
browser/base/content/test/plugins/browser_blocklist_content.js
bug 1129040
Test (plugin) blocklist, including attempt to "hack" it in a content process.
browser/base/content/test/plugins/browser_bug743421.js
Test CTP approval persists for new plugin instances in page.
browser/base/content/test/plugins/browser_bug744745.js
Test that CTP notification correctly appears despite plugin with opacity: 0 !important
browser/base/content/test/plugins/browser_bug787619.js
bug 787619
Make sure CTP works for plugins nested inside <a></a> elements.
browser/base/content/test/plugins/browser_bug812562.js
bug 812562
Navigating away from, then back to a page should restore its CTP status.
browser/base/content/test/plugins/browser_bug818118.js
bug 818118
Test that CTP plugin and "unknown" plugin type work correctly on same page.
browser/base/content/test/plugins/browser_clearplugindata.js
Test clearing plugin data using Sanitizer.jsm
browser/base/content/test/plugins/browser_iterate_hidden_plugins.js
Bug 1318383
Test `plugins.navigator.hidden_ctp_plugin`, which hides CTP plugins from `navigator.plugins`.
browser/base/content/test/plugins/browser_pluginCrashCommentAndURL.js
Test plugin crash detection and reporting
browser/base/content/test/plugins/browser_pluginCrashReportNonDeterminism.js
Bug 1110887
Test both "plugin process crash notification" orders -- content proc before main proc and vice-versa.
browser/base/content/test/plugins/browser_plugin_reloading.js
Bug 1129040
Re-instantiating plugin (using `plugin.src = new_value`) should retain CTP approval.
browser/base/content/test/plugins/browser_plugin_framed_domain.js
Plugin CTP prompts should adopt top-level page's principal for instead of closest frame's principal.
browser/base/content/test/plugins/browser_pluginnotification.js
Tests many CTP interface behavior cases -- doorhangers, overlays, multiple plugin instances, CTP choices (always, allow, never)
browser/base/content/test/plugins/browser_private_clicktoplay.js
Make sure CTP interface works in private windows
browser/base/content/test/plugins/browser_subframe_access_hidden_plugins.js
Allow navigator.plugins to list plugin after CTP approval, even if it listed in `plugins.navigator.hidden_ctp_plugin`
Differential Revision: https://phabricator.services.mozilla.com/D95906
UPDATED
-------
browser/base/content/test/plugins/browser_CTP_favorfallback.js
Test that plugin fallback behavior is correct.
Updated to reflect that plugins always show "alternate" content, which is either the user fallback of the browser's transparent fallback, regardless of the HTML.
browser/base/content/test/plugins/browser_CTP_outsideScrollArea.js
Test that overlay is visible (in layout sense) only if plugin is partially or completely visible.
Changed to test new fallback behavior where overlay is a hidden element with "blockall" atribute.
browser/base/content/test/plugins/browser_CTP_zoom.js
Test that overlay is present and visible at multiple zoom levels.
Adjusted to work with hidden overlay.
browser/base/content/test/performance/browser_startup_mainthreadio.js
Track IO done at browser startup
Removed `UserPlugins.parent` from list since we no longer scan for plugins.
browser/base/content/test/plugins/browser_bug797677.js
bug 797677
Test that plugin instantiation fails (with PLUGIN_UNSUPPORTED and no console error) when MIME type missing.
Removed the cleanup of (unused) test plugin.
browser/base/content/test/contextMenu/browser_contextmenu.js
Test context menu for many types of elements
Removed plugin element portion.
REMOVED
-------
browser/base/content/test/plugins/browser_CTP_contextmenu.js
Test that the CTP activate action in content menus for plugins works
browser/base/content/test/plugins/browser_CTP_crashreporting.js
Test that plugin crash submissions still work properly after click-to-play activation.
browser/base/content/test/plugins/browser_CTP_drag_drop.js
Test that plugin CTP dialog behaves correctly when dragging tab out of/into a window
browser/base/content/test/plugins/browser_CTP_hide_overlay.js
Test ability to close plugin "overlay" placeholder (the grey lego element)
browser/base/content/test/plugins/browser_CTP_iframe.js
Test that overlay can be interacted with (closed) when in an iframe
browser/base/content/test/plugins/browser_CTP_nonplugins.js
Bug 926605
Says it tests that non-plugin <object> elements don't show CTP but it doesn't. It tests that removing a CTP plugin from a page does not remove CTP dialog (in case, for example, page shows, then quickly removes plugin).
browser/base/content/test/plugins/browser_CTP_overlay_styles.js
Verify that styling on overlay elements, based on sizing, is correct.
browser/base/content/test/plugins/browser_CTP_resize.js
Test that a resize properly updates the overlay styling, which is only visible when large enough.
browser/base/content/test/plugins/browser_CTP_shouldShowOverlay.js
Test that partially obscured plugins show the overlay, properly styled (when they should).
browser/base/content/test/plugins/browser_blocking.js
bug 1129040
Test CTP behavior -- overlay dialog behavior, vulnerable plugin user approval, plugin's infoURL, etc.
browser/base/content/test/plugins/browser_blocklist_content.js
bug 1129040
Test (plugin) blocklist, including attempt to "hack" it in a content process.
browser/base/content/test/plugins/browser_bug743421.js
Test CTP approval persists for new plugin instances in page.
browser/base/content/test/plugins/browser_bug744745.js
Test that CTP notification correctly appears despite plugin with opacity: 0 !important
browser/base/content/test/plugins/browser_bug787619.js
bug 787619
Make sure CTP works for plugins nested inside <a></a> elements.
browser/base/content/test/plugins/browser_bug812562.js
bug 812562
Navigating away from, then back to a page should restore its CTP status.
browser/base/content/test/plugins/browser_bug818118.js
bug 818118
Test that CTP plugin and "unknown" plugin type work correctly on same page.
browser/base/content/test/plugins/browser_clearplugindata.js
Test clearing plugin data using Sanitizer.jsm
browser/base/content/test/plugins/browser_iterate_hidden_plugins.js
Bug 1318383
Test `plugins.navigator.hidden_ctp_plugin`, which hides CTP plugins from `navigator.plugins`.
browser/base/content/test/plugins/browser_pluginCrashCommentAndURL.js
Test plugin crash detection and reporting
browser/base/content/test/plugins/browser_pluginCrashReportNonDeterminism.js
Bug 1110887
Test both "plugin process crash notification" orders -- content proc before main proc and vice-versa.
browser/base/content/test/plugins/browser_plugin_reloading.js
Bug 1129040
Re-instantiating plugin (using `plugin.src = new_value`) should retain CTP approval.
browser/base/content/test/plugins/browser_plugin_framed_domain.js
Plugin CTP prompts should adopt top-level page's principal for instead of closest frame's principal.
browser/base/content/test/plugins/browser_pluginnotification.js
Tests many CTP interface behavior cases -- doorhangers, overlays, multiple plugin instances, CTP choices (always, allow, never)
browser/base/content/test/plugins/browser_private_clicktoplay.js
Make sure CTP interface works in private windows
browser/base/content/test/plugins/browser_subframe_access_hidden_plugins.js
Allow navigator.plugins to list plugin after CTP approval, even if it listed in `plugins.navigator.hidden_ctp_plugin`
Differential Revision: https://phabricator.services.mozilla.com/D95906
This method only is async in order to allow callers to wait for a process switch
triggered by the call to `loadURI` to be finished before resolving. With
DocumentChannel, we should never trigger a process switch eagerly like this
again, so we don't need any of the async behaviour here anymore.
This part is largely mechanical changes to tests, removing the `await` calls on
`loadURI`, and a follow-up part will remove the actual async logic from
`BrowserTestUtils.loadURI`.
Differential Revision: https://phabricator.services.mozilla.com/D94641
Previously this component was loaded in content due to shouldLoadURI requiring
it, but it is no longer required for that, so can be removed from content
processes.
Differential Revision: https://phabricator.services.mozilla.com/D94640
This method only is async in order to allow callers to wait for a process switch
triggered by the call to `loadURI` to be finished before resolving. With
DocumentChannel, we should never trigger a process switch eagerly like this
again, so we don't need any of the async behaviour here anymore.
This part is largely mechanical changes to tests, removing the `await` calls on
`loadURI`, and a follow-up part will remove the actual async logic from
`BrowserTestUtils.loadURI`.
Differential Revision: https://phabricator.services.mozilla.com/D94641
Previously this component was loaded in content due to shouldLoadURI requiring
it, but it is no longer required for that, so can be removed from content
processes.
Differential Revision: https://phabricator.services.mozilla.com/D94640
This commit uses the new Markers 2.0 API for FileIO Markers. I had to
create another option for the MarkerStack class in order to conditionally
capture a backtrace inside of the Macro. Otherwise the macro invocation
failed.
Differential Revision: https://phabricator.services.mozilla.com/D93848
This adds the ability to force the bookmarks toolbar to appear on all pages. The checkbox in the toolbar context menu will reflect if the toolbar will appear outside of the newtab page. The toolbar will always appear on the newtab page. Profiles that already had the toolbar showing will have a migration to keep their experience unchanged.
Differential Revision: https://phabricator.services.mozilla.com/D89222
This adds the ability to force the bookmarks toolbar to appear on all pages. The checkbox in the toolbar context menu will reflect if the toolbar will appear outside of the newtab page. The toolbar will always appear on the newtab page. Profiles that already had the toolbar showing will have a migration to keep their experience unchanged.
Differential Revision: https://phabricator.services.mozilla.com/D89222
This adds the ability to force the bookmarks toolbar to appear on all pages. The checkbox in the toolbar context menu will reflect if the toolbar will appear outside of the newtab page. The toolbar will always appear on the newtab page. Profiles that already had the toolbar showing will have a migration to keep their experience unchanged.
Differential Revision: https://phabricator.services.mozilla.com/D89222