also emit html fullscreen notification on windows when its webview contents trigger it
This commit is contained in:
parent
0dcf061dc1
commit
e8a02316ce
3 changed files with 38 additions and 27 deletions
|
@ -220,6 +220,7 @@ void WebContents::EnterFullscreenModeForTab(content::WebContents* source,
|
||||||
auto window = GetWindowFromGuest(source);
|
auto window = GetWindowFromGuest(source);
|
||||||
if (window) {
|
if (window) {
|
||||||
window->SetHtmlApiFullscreen(true);
|
window->SetHtmlApiFullscreen(true);
|
||||||
|
window->NotifyWindowEnterHtmlFullScreen();
|
||||||
source->GetRenderViewHost()->WasResized();
|
source->GetRenderViewHost()->WasResized();
|
||||||
Emit("enter-html-full-screen");
|
Emit("enter-html-full-screen");
|
||||||
}
|
}
|
||||||
|
@ -229,6 +230,7 @@ void WebContents::ExitFullscreenModeForTab(content::WebContents* source) {
|
||||||
auto window = GetWindowFromGuest(source);
|
auto window = GetWindowFromGuest(source);
|
||||||
if (window) {
|
if (window) {
|
||||||
window->SetHtmlApiFullscreen(false);
|
window->SetHtmlApiFullscreen(false);
|
||||||
|
window->NotifyWindowLeaveHtmlFullScreen();
|
||||||
source->GetRenderViewHost()->WasResized();
|
source->GetRenderViewHost()->WasResized();
|
||||||
Emit("leave-html-full-screen");
|
Emit("leave-html-full-screen");
|
||||||
}
|
}
|
||||||
|
@ -238,7 +240,7 @@ bool WebContents::IsFullscreenForTabOrPending(
|
||||||
const content::WebContents* source) const {
|
const content::WebContents* source) const {
|
||||||
auto window = GetWindowFromGuest(source);
|
auto window = GetWindowFromGuest(source);
|
||||||
if (window)
|
if (window)
|
||||||
return window->IsHtmlApiFullscreen();
|
return window->is_html_api_fullscreen();
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -100,6 +100,7 @@ NativeWindow::NativeWindow(content::WebContents* web_contents,
|
||||||
node_integration_(true),
|
node_integration_(true),
|
||||||
has_dialog_attached_(false),
|
has_dialog_attached_(false),
|
||||||
html_fullscreen_(false),
|
html_fullscreen_(false),
|
||||||
|
native_fullscreen_(false),
|
||||||
zoom_factor_(1.0),
|
zoom_factor_(1.0),
|
||||||
weak_factory_(this),
|
weak_factory_(this),
|
||||||
inspectable_web_contents_(
|
inspectable_web_contents_(
|
||||||
|
@ -477,6 +478,25 @@ void NativeWindow::OverrideWebkitPrefs(content::WebPreferences* prefs) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NativeWindow::SetHtmlApiFullscreen(bool enter_fullscreen) {
|
||||||
|
// Window is already in fullscreen mode, save the state.
|
||||||
|
if (enter_fullscreen && IsFullscreen()) {
|
||||||
|
native_fullscreen_ = true;
|
||||||
|
html_fullscreen_ = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Exit html fullscreen state but not window's fullscreen mode.
|
||||||
|
if (!enter_fullscreen && native_fullscreen_) {
|
||||||
|
html_fullscreen_ = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SetFullScreen(enter_fullscreen);
|
||||||
|
html_fullscreen_ = enter_fullscreen;
|
||||||
|
native_fullscreen_ = false;
|
||||||
|
}
|
||||||
|
|
||||||
void NativeWindow::NotifyWindowClosed() {
|
void NativeWindow::NotifyWindowClosed() {
|
||||||
if (is_closed_)
|
if (is_closed_)
|
||||||
return;
|
return;
|
||||||
|
@ -525,6 +545,16 @@ void NativeWindow::NotifyWindowLeaveFullScreen() {
|
||||||
OnWindowLeaveFullScreen());
|
OnWindowLeaveFullScreen());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NativeWindow::NotifyWindowEnterHtmlFullScreen() {
|
||||||
|
FOR_EACH_OBSERVER(NativeWindowObserver, observers_,
|
||||||
|
OnWindowEnterHtmlFullScreen());
|
||||||
|
}
|
||||||
|
|
||||||
|
void NativeWindow::NotifyWindowLeaveHtmlFullScreen() {
|
||||||
|
FOR_EACH_OBSERVER(NativeWindowObserver, observers_,
|
||||||
|
OnWindowLeaveHtmlFullScreen());
|
||||||
|
}
|
||||||
|
|
||||||
bool NativeWindow::ShouldCreateWebContents(
|
bool NativeWindow::ShouldCreateWebContents(
|
||||||
content::WebContents* web_contents,
|
content::WebContents* web_contents,
|
||||||
int route_id,
|
int route_id,
|
||||||
|
@ -700,19 +730,15 @@ void NativeWindow::RendererResponsive(content::WebContents* source) {
|
||||||
void NativeWindow::EnterFullscreenModeForTab(content::WebContents* source,
|
void NativeWindow::EnterFullscreenModeForTab(content::WebContents* source,
|
||||||
const GURL& origin) {
|
const GURL& origin) {
|
||||||
SetHtmlApiFullscreen(true);
|
SetHtmlApiFullscreen(true);
|
||||||
FOR_EACH_OBSERVER(NativeWindowObserver, observers_,
|
|
||||||
OnWindowEnterHtmlFullScreen());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NativeWindow::ExitFullscreenModeForTab(content::WebContents* source) {
|
void NativeWindow::ExitFullscreenModeForTab(content::WebContents* source) {
|
||||||
SetHtmlApiFullscreen(false);
|
SetHtmlApiFullscreen(false);
|
||||||
FOR_EACH_OBSERVER(NativeWindowObserver, observers_,
|
|
||||||
OnWindowLeaveHtmlFullScreen());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NativeWindow::IsFullscreenForTabOrPending(
|
bool NativeWindow::IsFullscreenForTabOrPending(
|
||||||
const content::WebContents* source) const {
|
const content::WebContents* source) const {
|
||||||
return IsHtmlApiFullscreen();
|
return is_html_api_fullscreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NativeWindow::BeforeUnloadFired(const base::TimeTicks& proceed_time) {
|
void NativeWindow::BeforeUnloadFired(const base::TimeTicks& proceed_time) {
|
||||||
|
@ -805,25 +831,6 @@ void NativeWindow::ScheduleUnresponsiveEvent(int ms) {
|
||||||
base::TimeDelta::FromMilliseconds(ms));
|
base::TimeDelta::FromMilliseconds(ms));
|
||||||
}
|
}
|
||||||
|
|
||||||
void NativeWindow::SetHtmlApiFullscreen(bool enter_fullscreen) {
|
|
||||||
// Window is already in fullscreen mode, save the state.
|
|
||||||
if (enter_fullscreen && IsFullscreen()) {
|
|
||||||
forced_fullscreen_ = true;
|
|
||||||
html_fullscreen_ = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Exit html fullscreen state but not window's fullscreen mode.
|
|
||||||
if (!enter_fullscreen && forced_fullscreen_) {
|
|
||||||
html_fullscreen_ = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
SetFullScreen(enter_fullscreen);
|
|
||||||
html_fullscreen_ = enter_fullscreen;
|
|
||||||
forced_fullscreen_ = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void NativeWindow::NotifyWindowUnresponsive() {
|
void NativeWindow::NotifyWindowUnresponsive() {
|
||||||
window_unresposive_closure_.Cancel();
|
window_unresposive_closure_.Cancel();
|
||||||
|
|
||||||
|
|
|
@ -209,6 +209,8 @@ class NativeWindow : public brightray::DefaultWebContentsDelegate,
|
||||||
void NotifyWindowRestore();
|
void NotifyWindowRestore();
|
||||||
void NotifyWindowEnterFullScreen();
|
void NotifyWindowEnterFullScreen();
|
||||||
void NotifyWindowLeaveFullScreen();
|
void NotifyWindowLeaveFullScreen();
|
||||||
|
void NotifyWindowEnterHtmlFullScreen();
|
||||||
|
void NotifyWindowLeaveHtmlFullScreen();
|
||||||
|
|
||||||
void AddObserver(NativeWindowObserver* obs) {
|
void AddObserver(NativeWindowObserver* obs) {
|
||||||
observers_.AddObserver(obs);
|
observers_.AddObserver(obs);
|
||||||
|
@ -220,7 +222,7 @@ class NativeWindow : public brightray::DefaultWebContentsDelegate,
|
||||||
|
|
||||||
bool has_frame() const { return has_frame_; }
|
bool has_frame() const { return has_frame_; }
|
||||||
|
|
||||||
bool IsHtmlApiFullscreen() const { return html_fullscreen_; }
|
bool is_html_api_fullscreen() const { return html_fullscreen_; }
|
||||||
|
|
||||||
void set_has_dialog_attached(bool has_dialog_attached) {
|
void set_has_dialog_attached(bool has_dialog_attached) {
|
||||||
has_dialog_attached_ = has_dialog_attached;
|
has_dialog_attached_ = has_dialog_attached;
|
||||||
|
@ -352,7 +354,7 @@ class NativeWindow : public brightray::DefaultWebContentsDelegate,
|
||||||
bool html_fullscreen_;
|
bool html_fullscreen_;
|
||||||
|
|
||||||
// Whether window is fullscreened by window api.
|
// Whether window is fullscreened by window api.
|
||||||
bool forced_fullscreen_;
|
bool native_fullscreen_;
|
||||||
|
|
||||||
// Closure that would be called when window is unresponsive when closing,
|
// Closure that would be called when window is unresponsive when closing,
|
||||||
// it should be cancelled when we can prove that the window is responsive.
|
// it should be cancelled when we can prove that the window is responsive.
|
||||||
|
|
Loading…
Reference in a new issue