Bug 1377580 - Fix target=_blank somewhat for GeckoView r=esawin draft
authorJames Willcox <snorp@snorp.net>
Fri, 30 Jun 2017 15:17:22 -0700
changeset 602920 ac1b1d24de8d49a03f8b07e4e6e7e6c0cb2b1336
parent 602428 57c1230c724759a95fca2d83fb4205a3bd58779b
child 635772 826b65a5a3a0ac4d4743532db5e076be91f28eb9
push id66612
push userbmo:snorp@snorp.net
push dateFri, 30 Jun 2017 22:18:37 +0000
reviewersesawin
bugs1377580
milestone56.0a1
Bug 1377580 - Fix target=_blank somewhat for GeckoView r=esawin Things are not perfect here, but at least they load (in the same frame) MozReview-Commit-ID: 6Zpp1tPHFpg
mobile/android/modules/geckoview/GeckoViewNavigation.jsm
--- a/mobile/android/modules/geckoview/GeckoViewNavigation.jsm
+++ b/mobile/android/modules/geckoview/GeckoViewNavigation.jsm
@@ -13,17 +13,17 @@ Cu.import("resource://gre/modules/XPCOMU
 
 XPCOMUtils.defineLazyModuleGetter(this, "EventDispatcher",
   "resource://gre/modules/Messaging.jsm");
 
 var dump = Cu.import("resource://gre/modules/AndroidLog.jsm", {})
            .AndroidLog.d.bind(null, "ViewNavigation");
 
 function debug(aMsg) {
-  // dump(aMsg);
+  // dump(aMsg + '\n');
 }
 
 // Handles navigation requests between Gecko and a GeckoView.
 // Implements GeckoView.loadUri via openURI.
 // Handles GeckoView:GoBack and :GoForward requests dispatched by
 // GeckoView.goBack and .goForward.
 // Dispatches GeckoView:LocationChange to the GeckoView on location change when
 // active.
@@ -79,19 +79,30 @@ class GeckoViewNavigation extends GeckoV
 
   // Message manager event handler.
   receiveMessage(aMsg) {
     debug("receiveMessage " + aMsg.name);
   }
 
   // nsIBrowserDOMWindow::openURI implementation.
   openURI(aUri, aOpener, aWhere, aFlags) {
-    debug("openURI: aUri.spec=" + aUri.spec);
-    // nsIWebNavigation::loadURI(URI, loadFlags, referrer, postData, headers).
-    this.browser.loadURI(aUri.spec, null, null, null);
+    debug('openURI: ' + aUri);
+    return this.browser.contentWindow;
+  }
+
+  // nsIBrowserDOMWindow::openURIInFrame
+  openURIInFrame(aUri, aParams, aWhere, aFlags,
+                 aNextTabParentId, aName) {
+    debug('openURIInFrame: ' + aUri);
+    return this.browser.QueryInterface(Ci.nsIFrameLoaderOwner);
+  }
+
+  // nsIBrowserDOMWindow::isTabContentWindow
+  isTabContentWindow(aWindow) {
+    return this.browser.contentWindow === aWindow;
   }
 
   // nsIBrowserDOMWindow::canClose implementation.
   canClose() {
     debug("canClose");
     return false;
   }