mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 16:55:40 +00:00
Bug 1550877 - Use correct E10SUtils in GeckoViewNavigation. r=snorp
This fixes a crash in `browser.tabs.update` when used with WebExtension pages. Differential Revision: https://phabricator.services.mozilla.com/D31453 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
b6a082b167
commit
1324e8b036
@ -0,0 +1,7 @@
|
||||
browser.runtime.onMessage.addListener(notify);
|
||||
|
||||
function notify(message) {
|
||||
if (message.action == "showTab") {
|
||||
browser.tabs.update({url: "/tab.html"});
|
||||
}
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
{
|
||||
"manifest_version": 2,
|
||||
"name": "Mozilla Android Components - Tabs Update Test",
|
||||
"version": "1.0",
|
||||
"background": {
|
||||
"scripts": ["background-script.js"]
|
||||
},
|
||||
"content_scripts": [
|
||||
{
|
||||
"matches": ["*://*.example.com/*"],
|
||||
"js": ["tabs.js"],
|
||||
"run_at": "document_idle"
|
||||
}
|
||||
],
|
||||
"web_accessible_resources": [
|
||||
"tab.html"
|
||||
],
|
||||
"permissions": [
|
||||
"geckoViewAddons",
|
||||
"nativeMessaging",
|
||||
"tabs",
|
||||
"<all_urls>"
|
||||
]
|
||||
}
|
@ -0,0 +1 @@
|
||||
<h1>Hello World!</h1>
|
@ -0,0 +1 @@
|
||||
browser.runtime.sendMessage({"action": "showTab"});
|
@ -9,6 +9,7 @@ import org.mozilla.geckoview.test.rule.GeckoSessionTestRule.ReuseSession
|
||||
|
||||
import android.support.test.filters.MediumTest
|
||||
import android.support.test.runner.AndroidJUnit4
|
||||
import org.hamcrest.core.StringEndsWith.endsWith
|
||||
import org.hamcrest.core.IsEqual.equalTo
|
||||
import org.json.JSONObject
|
||||
import org.junit.Assert
|
||||
@ -17,7 +18,9 @@ import org.junit.Assert.fail
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.geckoview.*
|
||||
import org.mozilla.geckoview.test.rule.GeckoSessionTestRule
|
||||
import org.mozilla.geckoview.test.rule.GeckoSessionTestRule.WithDevToolsAPI
|
||||
import org.mozilla.geckoview.test.util.Callbacks
|
||||
import org.mozilla.geckoview.test.util.HttpBin
|
||||
import java.net.URI
|
||||
|
||||
@ -460,6 +463,50 @@ class WebExtensionTest : BaseSessionTest() {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun loadWebExtensionPage() {
|
||||
val extension = WebExtension("resource://android/assets/web_extensions/extension-page-update/")
|
||||
sessionRule.waitForResult(sessionRule.runtime.registerWebExtension(extension))
|
||||
|
||||
mainSession.loadUri("http://example.com");
|
||||
|
||||
mainSession.waitUntilCalled(object : Callbacks.NavigationDelegate, Callbacks.ProgressDelegate {
|
||||
@GeckoSessionTestRule.AssertCalled(count = 1)
|
||||
override fun onLocationChange(session: GeckoSession, url: String?) {
|
||||
assertThat("Url should load example.com first",
|
||||
url, equalTo("http://example.com/"))
|
||||
}
|
||||
|
||||
@GeckoSessionTestRule.AssertCalled(count = 1)
|
||||
override fun onPageStop(session: GeckoSession, success: Boolean) {
|
||||
assertThat("Page should load successfully.",
|
||||
success, equalTo(true))
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
var page: String? = null
|
||||
var pageStop = GeckoResult<Boolean>()
|
||||
|
||||
mainSession.delegateUntilTestEnd(object : Callbacks.NavigationDelegate, Callbacks.ProgressDelegate {
|
||||
override fun onLocationChange(session: GeckoSession, url: String?) {
|
||||
page = url
|
||||
}
|
||||
|
||||
override fun onPageStop(session: GeckoSession, success: Boolean) {
|
||||
if (success && page != null && page!!.endsWith("/tab.html")) {
|
||||
pageStop.complete(true)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
// Make sure the page loaded successfully
|
||||
sessionRule.waitForResult(pageStop)
|
||||
|
||||
assertThat("Url should load WebExtension page", page, endsWith("/tab.html"))
|
||||
sessionRule.waitForResult(sessionRule.runtime.unregisterWebExtension(extension))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun badFileType() {
|
||||
testRegisterError("resource://android/bad/location/error",
|
||||
|
@ -10,7 +10,7 @@ const {GeckoViewModule} = ChromeUtils.import("resource://gre/modules/GeckoViewMo
|
||||
const {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetters(this, {
|
||||
E10SUtils: "resource://gre/modules/sessionstore/Utils.jsm",
|
||||
E10SUtils: "resource://gre/modules/E10SUtils.jsm",
|
||||
LoadURIDelegate: "resource://gre/modules/LoadURIDelegate.jsm",
|
||||
Services: "resource://gre/modules/Services.jsm",
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user