Bug 1370605 - Add GeckoView.exitFullScreen() r=esawin draft
authorJames Willcox <snorp@snorp.net>
Tue, 06 Jun 2017 12:34:53 -0500
changeset 589719 10dc7b01e1c0db4400d234c88bfd4cf97c445cff
parent 589718 b65c909d231c6b9f69f5f7986f1684566e4c98ce
child 631982 83d6170993d7f46190dc497dfcee7cf32c8608b8
push id62480
push userbmo:snorp@snorp.net
push dateTue, 06 Jun 2017 17:35:57 +0000
reviewersesawin
bugs1370605
milestone55.0a1
Bug 1370605 - Add GeckoView.exitFullScreen() r=esawin MozReview-Commit-ID: 4vuAvDoQE0W
mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoView.java
mobile/android/modules/geckoview/GeckoViewContent.jsm
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoView.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoView.java
@@ -602,16 +602,23 @@ public class GeckoView extends LayerView
             getEventDispatcher().dispatch("GeckoView:ImportScript", data);
             return;
         }
 
         throw new IllegalArgumentException("Must import script from 'resources://android/assets/' location.");
     }
 
     /**
+    * Exits fullscreen mode
+    */
+    public void exitFullScreen() {
+        mEventDispatcher.dispatch("GeckoViewContent:ExitFullScreen", null);
+    }
+
+    /**
     * Set the content callback handler.
     * This will replace the current handler.
     * @param content An implementation of ContentListener.
     */
     public void setContentListener(ContentListener content) {
         mContentListener = content;
     }
 
--- a/mobile/android/modules/geckoview/GeckoViewContent.jsm
+++ b/mobile/android/modules/geckoview/GeckoViewContent.jsm
@@ -23,18 +23,30 @@ class GeckoViewContent extends GeckoView
     this.messageManager.addMessageListener("GeckoView:DOMFullscreenExit", this);
     this.messageManager.addMessageListener("GeckoView:DOMFullscreenRequest", this);
     this.messageManager.addMessageListener("GeckoView:DOMTitleChanged", this);
 
     this.window.addEventListener("MozDOMFullscreen:Entered", this,
                                  /* capture */ true, /* untrusted */ false);
     this.window.addEventListener("MozDOMFullscreen:Exited", this,
                                  /* capture */ true, /* untrusted */ false);
+
+    this.eventDispatcher.registerListener(this, ["GeckoViewContent:ExitFullScreen"]);
   }
 
+  // Bundle event handler.
+  onEvent(aEvent, aData, aCallback) {
+    switch (aEvent) {
+      case "GeckoViewContent:ExitFullScreen":
+        this.browser.messageManager.sendAsyncMessage("GeckoView:DOMFullscreenExited");
+        break;
+    }
+  }
+
+  // DOM event handler
   handleEvent(aEvent) {
     debug("handleEvent: aEvent.type=" + aEvent.type);
 
     switch (aEvent.type) {
       case "MozDOMFullscreen:Entered":
         if (this.browser == aEvent.target) {
           // Remote browser; dispatch to content process.
           this.browser.messageManager.sendAsyncMessage("GeckoView:DOMFullscreenEntered");