Closed
Bug 1189911
Opened 10 years ago
Closed 9 years ago
[e10s] Enable browser_plugin_infolink test
Categories
(Core Graveyard :: Plug-ins, defect)
Core Graveyard
Plug-ins
Tracking
(e10s+, firefox42 affected, firefox47 fixed, firefox48 fixed)
RESOLVED
FIXED
mozilla48
People
(Reporter: rowbot, Assigned: jaws)
References
(Blocks 1 open bug)
Details
Attachments
(2 files, 3 obsolete files)
37.49 KB,
text/plain
|
Details | |
5.58 KB,
patch
|
jaws
:
review+
ritu
:
approval-mozilla-aurora+
|
Details | Diff | Splinter Review |
With Bug 1160166 fixed and a workaround implemented in Bug 1184276, it should be safe to enable this test on e10s. It is passing locally on my Win 7 machine.
Reporter | ||
Comment 1•10 years ago
|
||
Attachment #8641835 -
Flags: review?(jmathies)
![]() |
||
Comment 2•10 years ago
|
||
Comment on attachment 8641835 [details] [diff] [review]
bug1189911_reenable_browser_plugin_infolink_test.diff
Thanks!
Attachment #8641835 -
Flags: review?(jmathies) → review+
Reporter | ||
Comment 3•10 years ago
|
||
Reporter | ||
Comment 4•10 years ago
|
||
Thanks for the quick review! Try looks good.
Keywords: checkin-needed
Keywords: checkin-needed
Comment 6•10 years ago
|
||
Backed out for Win8 e10s browser_plugin_reloading.js (and more) permafail.
https://treeherder.mozilla.org/logviewer.html#?job_id=12418306&repo=mozilla-inbound
https://hg.mozilla.org/integration/mozilla-inbound/rev/43b640c7daaf
Reporter | ||
Comment 7•10 years ago
|
||
Figures, I don't include win64 in the try push and that blows up in my face. I'm looking into it.
Reporter | ||
Comment 8•10 years ago
|
||
Updated•10 years ago
|
Blocks: e10s-tests
tracking-e10s:
--- → +
Reporter | ||
Comment 9•10 years ago
|
||
Reporter | ||
Comment 10•10 years ago
|
||
Jim, the problem here is the |promiseForCondition| call[1] (see the try push in comment 9). Commenting out that line seems to fix things here, but what I don't understand is why. I tried changing the test to use |waitForMs| instead of |promiseForCondition|, but all the subsequent tests still failed. For whatever strange reason, I was able to reproduce this on my machine yesterday, but can not reproduce it today... If you have some spare time in the next few days, I would appreciate it if you could take a look.
[1] https://dxr.mozilla.org/mozilla-central/source/browser/base/content/test/plugins/browser_plugin_infolink.js?from=browser_plugin_infolink.js#70
Flags: needinfo?(jmathies)
![]() |
||
Comment 11•10 years ago
|
||
(In reply to Trevor Rowbotham from comment #10)
> Jim, the problem here is the |promiseForCondition| call[1] (see the try push
> in comment 9). Commenting out that line seems to fix things here, but what I
> don't understand is why. I tried changing the test to use |waitForMs|
> instead of |promiseForCondition|, but all the subsequent tests still failed.
> For whatever strange reason, I was able to reproduce this on my machine
> yesterday, but can not reproduce it today... If you have some spare time in
> the next few days, I would appreciate it if you could take a look.
>
> [1]
> https://dxr.mozilla.org/mozilla-central/source/browser/base/content/test/
> plugins/browser_plugin_infolink.js?from=browser_plugin_infolink.js#70
I remember this test condition was unreliable when we ported these. A way to debug this would be to put info statements in |condition| to see what doesn't show up. Also you can use code like this in there as well and push to try:
let snap = SpecialPowers.snapshotWindow(window, false);
info(snap.toDataURL());
This snaps a bunch of screenshots and dumps them to the logs so you can see if that addons page actually loads properly.
Flags: needinfo?(jmathies)
Reporter | ||
Comment 12•10 years ago
|
||
Turns out the test failures are caused by the workaround implemented in Bug 1184276, however, without the workaround in Bug 1184276 we just crash. Adding a dependency on the followup bug.
Depends on: 1189025
Reporter | ||
Comment 13•10 years ago
|
||
For reference, here is the log from the test run with the patch in this bug applied and backing out the patch from Bug 1184276 using:
mach mochitest browser/base/content/test/plugins/ --e10s --start-at browser_plugin_infolink.js
Relevant bits:
IPDL protocol error: Handler for GetBlocklistState returned error code
###!!! [Parent][DispatchSyncMessage] Error: (msgtype=0x3A004E,name=PContent::Msg_GetBlocklistState) Processing error: message was deserialized, but the handler returned false (indicating failure)
###!!! [Parent][MessageChannel] Error: (msgtype=0x200081,name=PBrowser::Msg_Destroy) Channel error: cannot send/recv
###!!! [Parent][MessageChannel] Error: (msgtype=0x200081,name=PBrowser::Msg_Destroy) Channel error: cannot send/recv
43 INFO Console message: [JavaScript Error: "remote browser crashed while on http://127.0.0.1:8888/browser/browser/base/content/test/plugins/plugin_test.html
" {file: "chrome://mochikit/content/mochitest-e10s-utils.js" line: 8}]
44 INFO Console message: [JavaScript Error: "remote browser crashed while on about:blank
" {file: "chrome://mochikit/content/mochitest-e10s-utils.js" line: 8}]
wheel input enabled, wheelWarning, undefined
touch input enabled, touchWarning, undefined
45 INFO TEST-UNEXPECTED-FAIL | browser/base/content/test/plugins/browser_plugin_reloading.js | Uncaught exception - at chrome://mochitests/content/browser/browser/base/content/test/plugins/head.js:100 - Error: Timed out while waiting for a 'load'' event
Stack trace:
promiseTabLoadEvent/</timeout<@chrome://mochitests/content/browser/browser/base/content/test/plugins/head.js:100:14
setTimeout handler*SimpleTest_setTimeoutShim@chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:632:12
promiseTabLoadEvent/<@chrome://mochitests/content/browser/browser/base/content/test/plugins/head.js:98:19
promiseTabLoadEvent@chrome://mochitests/content/browser/browser/base/content/test/plugins/head.js:81:1
@chrome://mochitests/content/browser/browser/base/content/test/plugins/browser_plugin_reloading.js:47:9
Handler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:934:23
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:813:7
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:744:11
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:776:7
this.PromiseWalker.completePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:711:7
Tester_execTest@chrome://mochikit/content/browser-test.js:745:9
Tester.prototype.nextTest</<@chrome://mochikit/content/browser-test.js:668:7
SimpleTest.waitForFocus/waitForFocusInner/focusedOrLoaded/<@chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:745:59
Assignee | ||
Comment 14•9 years ago
|
||
There were a lot of moving parts in this test that didn't need to be, so I was able to reduce this test a by a good amount.
The test still causes failures on e10s Win8+ though, and it only happens when we wait for the addons://list/plugin to load. If we exit the test before the view has loaded we don't get the subsequent failures anymore. When the addon view loads, it lists the addons, and indirectly calls the `blocklistState` getter on each addon. Note that I've removed setting the blocklist in this test and I still see the errors.
It seems to me that the blocklist from previous tests have lasting effects, but those effects aren't persistent until the add-ons manager is opened. Are we sure that we are properly removing the blocklist when tests complete? head.js includes a `resetBlocklist` function that only clears the extensions.blocklist.url pref.
nsBlocklistService.js has a pref observer for the extensions.blocklist. root, which supposedly could update the blocklist, but I don't see any code within Blocklist.prototype.observe to do so when that specific pref is changed. Adding a simple case statement for extensions.blocklist.url and calling `this._blocklistUpdated(null,null)` caused other test failures.
It is unclear to me what makes this Windows8+ specific and having it not affect other platforms or other versions of Windows.
Georg, does anything here stand out to you?
Assignee: smokey101stair → jaws
Attachment #8641835 -
Attachment is obsolete: true
Flags: needinfo?(gfritzsche)
Comment 15•9 years ago
|
||
I can't see anything obvious really, but then again i haven't really worked on those things for a while.
Is this still the same error or a different one?
Flags: needinfo?(gfritzsche)
Assignee | ||
Updated•9 years ago
|
Attachment #8723933 -
Attachment is obsolete: true
Assignee | ||
Comment 16•9 years ago
|
||
Review commit: https://reviewboard.mozilla.org/r/37963/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/37963/
Attachment #8726390 -
Flags: review?(gfritzsche)
Assignee | ||
Comment 17•9 years ago
|
||
I worked around the issue by not faking the BrowserOpenAddonsMgr function so the Add-ons Manager isn't actually opened, but we can test that the correct view was requested.
https://treeherder.mozilla.org/#/jobs?repo=try&revision=daa518b6b4f5
Assignee | ||
Comment 18•9 years ago
|
||
Comment on attachment 8726390 [details]
MozReview Request: Bug 1189911 - [e10s] Enable browser_plugin_infolink test. r?gfritzsche
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37963/diff/1-2/
Assignee | ||
Comment 19•9 years ago
|
||
Updated try with head.js changes reverted,
https://treeherder.mozilla.org/#/jobs?repo=try&revision=05c261b69549
Assignee | ||
Comment 20•9 years ago
|
||
Comment on attachment 8726390 [details]
MozReview Request: Bug 1189911 - [e10s] Enable browser_plugin_infolink test. r?gfritzsche
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37963/diff/2-3/
Comment 21•9 years ago
|
||
Comment on attachment 8726390 [details]
MozReview Request: Bug 1189911 - [e10s] Enable browser_plugin_infolink test. r?gfritzsche
https://reviewboard.mozilla.org/r/37963/#review34663
If we need to go with a work-around now, we need to file a follow-up on removing it later.
Or is opening the functionality of opening the addon manager sufficiently covered elsewhere?
::: browser/base/content/test/plugins/browser_plugin_infolink.js:18
(Diff revision 3)
> - let promise = waitForEvent(gBrowser.tabContainer, "TabOpen", null, true);
> + window.BrowserOpenAddonsMgr = function BrowserOpenAddonsMgrShim(view) {
Nit: Does that function need a name?
::: browser/base/content/test/plugins/browser_plugin_infolink.js:39
(Diff revision 3)
> + is(requestedView, "addons://list/plugin", "The Add-ons Manager should open to the plugin view");
Nit: "should open the"
::: browser/base/content/test/plugins/browser_plugin_infolink.js:44
(Diff revision 3)
> +add_task(function* cleanup() {
In contrast to `registerCleanupFunction()`, this will not run if there were failures before etc., which could make later tests fail in strange ways.
Is that acceptable?
::: browser/base/content/test/plugins/browser_plugin_infolink.js:47
(Diff revision 3)
> + setTestPluginEnabledState(Ci.nsIPluginTag.STATE_ENABLED, "Test Plug-in");
This is potentially surprising - `setTestPluginEnabledState()` registers a cleanup function that resets this to the previous value, so this seems redundant.
Attachment #8726390 -
Flags: review?(gfritzsche)
Assignee | ||
Comment 22•9 years ago
|
||
https://reviewboard.mozilla.org/r/37963/#review34663
Opening the addon manager is covered by at least three tests, as shown by this search http://mxr.mozilla.org/mozilla-central/search?string=browseropenaddonsmgr&find=test&findi=&filter=%5E%5B%5E%5C0%5D*%24&hitlimit=&tree=mozilla-central
> Nit: Does that function need a name?
No, I'll remove it.
> In contrast to `registerCleanupFunction()`, this will not run if there were failures before etc., which could make later tests fail in strange ways.
> Is that acceptable?
Good point, I'll use registerCleanupFunction.
> This is potentially surprising - `setTestPluginEnabledState()` registers a cleanup function that resets this to the previous value, so this seems redundant.
The implementation at http://hg.mozilla.org/mozilla-central/annotate/b6acf4d4fc20/widget/tests/utils.js#l20 uses a registerCleanupFunction, but this code uses the implementation defined at http://hg.mozilla.org/mozilla-central/annotate/b6acf4d4fc20/browser/base/content/test/plugins/head.js#l160 which doesn't use registerCleanupFunction.
Assignee | ||
Comment 23•9 years ago
|
||
Comment on attachment 8726390 [details]
MozReview Request: Bug 1189911 - [e10s] Enable browser_plugin_infolink test. r?gfritzsche
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37963/diff/3-4/
Attachment #8726390 -
Flags: review?(gfritzsche)
Comment 24•9 years ago
|
||
Comment on attachment 8726390 [details]
MozReview Request: Bug 1189911 - [e10s] Enable browser_plugin_infolink test. r?gfritzsche
https://reviewboard.mozilla.org/r/37963/#review35013
Thanks.
Attachment #8726390 -
Flags: review?(gfritzsche) → review+
Assignee | ||
Comment 25•9 years ago
|
||
Attachment #8726390 -
Attachment is obsolete: true
Attachment #8727386 -
Flags: review+
Assignee | ||
Updated•9 years ago
|
Keywords: checkin-needed
Comment 26•9 years ago
|
||
Keywords: checkin-needed
Comment 27•9 years ago
|
||
bugherder |
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
status-firefox48:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla48
Assignee | ||
Comment 28•9 years ago
|
||
Comment on attachment 8727386 [details] [diff] [review]
Patch for check-in
Approval Request Comment
[Feature/regressing bug #]: e10s test fix
[User impact if declined]: n/a
[Describe test coverage new/current, TreeHerder]: automated test
[Risks and why]: no risk, doesn't touch production code
[String/UUID change made/needed]: none
Attachment #8727386 -
Flags: approval-mozilla-aurora?
Comment on attachment 8727386 [details] [diff] [review]
Patch for check-in
Test-only fix.
Attachment #8727386 -
Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
Comment 30•9 years ago
|
||
bugherder uplift |
status-firefox47:
--- → fixed
Updated•3 years ago
|
Product: Core → Core Graveyard
You need to log in
before you can comment on or make changes to this bug.
Description
•