Bug 719557 - "Full Screen" add-on (window.fullScreen) has problems in native Fennec [r=blassey]

This commit is contained in:
Matt Brubeck 2012-01-26 09:17:33 -08:00
Родитель b9c5df43a5
Коммит d3b2b62f35
2 изменённых файлов: 17 добавлений и 4 удалений

Просмотреть файл

@ -117,7 +117,7 @@ abstract public class GeckoApp
private RelativeLayout mGeckoLayout; private RelativeLayout mGeckoLayout;
public static SurfaceView cameraView; public static SurfaceView cameraView;
public static GeckoApp mAppContext; public static GeckoApp mAppContext;
public static boolean mFullScreen = false; public static boolean mDOMFullScreen = false;
public static File sGREDir = null; public static File sGREDir = null;
public static Menu sMenu; public static Menu sMenu;
private static GeckoThread sGeckoThread = null; private static GeckoThread sGeckoThread = null;
@ -994,6 +994,10 @@ abstract public class GeckoApp
mBrowserToolbar.setVisibility(View.VISIBLE); mBrowserToolbar.setVisibility(View.VISIBLE);
} }
}); });
} else if (event.equals("DOMFullScreen:Start")) {
mDOMFullScreen = true;
} else if (event.equals("DOMFullScreen:Stop")) {
mDOMFullScreen = false;
} else if (event.equals("FormAssist:AutoComplete")) { } else if (event.equals("FormAssist:AutoComplete")) {
final JSONArray suggestions = message.getJSONArray("suggestions"); final JSONArray suggestions = message.getJSONArray("suggestions");
if (suggestions.length() == 0) { if (suggestions.length() == 0) {
@ -1434,7 +1438,6 @@ abstract public class GeckoApp
} }
public void setFullScreen(final boolean fullscreen) { public void setFullScreen(final boolean fullscreen) {
mFullScreen = fullscreen;
mMainHandler.post(new Runnable() { mMainHandler.post(new Runnable() {
public void run() { public void run() {
// Hide/show the system notification bar // Hide/show the system notification bar
@ -1625,6 +1628,8 @@ abstract public class GeckoApp
GeckoAppShell.registerGeckoEventListener("Menu:Remove", GeckoApp.mAppContext); GeckoAppShell.registerGeckoEventListener("Menu:Remove", GeckoApp.mAppContext);
GeckoAppShell.registerGeckoEventListener("Gecko:Ready", GeckoApp.mAppContext); GeckoAppShell.registerGeckoEventListener("Gecko:Ready", GeckoApp.mAppContext);
GeckoAppShell.registerGeckoEventListener("Toast:Show", GeckoApp.mAppContext); GeckoAppShell.registerGeckoEventListener("Toast:Show", GeckoApp.mAppContext);
GeckoAppShell.registerGeckoEventListener("DOMFullScreen:Start", GeckoApp.mAppContext);
GeckoAppShell.registerGeckoEventListener("DOMFullScreen:Stop", GeckoApp.mAppContext);
GeckoAppShell.registerGeckoEventListener("ToggleChrome:Hide", GeckoApp.mAppContext); GeckoAppShell.registerGeckoEventListener("ToggleChrome:Hide", GeckoApp.mAppContext);
GeckoAppShell.registerGeckoEventListener("ToggleChrome:Show", GeckoApp.mAppContext); GeckoAppShell.registerGeckoEventListener("ToggleChrome:Show", GeckoApp.mAppContext);
GeckoAppShell.registerGeckoEventListener("FormAssist:AutoComplete", GeckoApp.mAppContext); GeckoAppShell.registerGeckoEventListener("FormAssist:AutoComplete", GeckoApp.mAppContext);
@ -2237,7 +2242,7 @@ abstract public class GeckoApp
return; return;
} }
if (mFullScreen) { if (mDOMFullScreen) {
GeckoAppShell.sendEventToGecko(new GeckoEvent("FullScreen:Exit", null)); GeckoAppShell.sendEventToGecko(new GeckoEvent("FullScreen:Exit", null));
return; return;
} }

Просмотреть файл

@ -235,8 +235,16 @@ var BrowserApp = {
type: window.fullScreen ? "ToggleChrome:Show" : "ToggleChrome:Hide" type: window.fullScreen ? "ToggleChrome:Show" : "ToggleChrome:Hide"
} }
}); });
}, false);
if (!window.fullScreen) window.addEventListener("mozfullscreenchange", function() {
sendMessageToJava({
gecko: {
type: document.mozFullScreen ? "DOMFullScreen:Start" : "DOMFullScreen:Stop"
}
});
if (document.mozFullScreen)
showFullScreenWarning(); showFullScreenWarning();
}, false); }, false);