Chromium Code Reviews| Index: extensions/browser/guest_view/web_view/web_view_guest.cc |
| diff --git a/extensions/browser/guest_view/web_view/web_view_guest.cc b/extensions/browser/guest_view/web_view/web_view_guest.cc |
| index 8b9bfb0391399deca42ff8a2b7724d372417e117..ba5b0ccd1687b1d6728e78419cbedc34f3ac7972 100644 |
| --- a/extensions/browser/guest_view/web_view/web_view_guest.cc |
| +++ b/extensions/browser/guest_view/web_view/web_view_guest.cc |
| @@ -220,6 +220,61 @@ bool WebViewGuest::CanRunInDetachedState() const { |
| return true; |
| } |
| +void WebViewGuest::EnterFullscreenModeForTab( |
| + content::WebContents* web_contents, const GURL& origin) { |
| + printf("++++ %s\n", __PRETTY_FUNCTION__); |
| + base::DictionaryValue request_info; |
| + request_info.SetString(guestview::kUrl, origin.spec()); |
| + web_view_permission_helper_->RequestPermission( |
| + WEB_VIEW_PERMISSION_TYPE_FULLSCREEN, |
| + request_info, |
| + base::Bind(&WebViewGuest::OnFullscreenPermissionDecided, |
| + weak_ptr_factory_.GetWeakPtr(), |
| + origin), |
| + false /* allowed_by_default */); |
| +} |
| + |
| +void WebViewGuest::OnFullscreenPermissionDecided( |
| + const GURL& origin, |
| + bool allowed, |
| + const std::string& user_input) { |
| + printf("________ %s, allowed: %d\n", __PRETTY_FUNCTION__, allowed); |
| + // TODO: Explain. |
| + is_fullscreen_ = true; |
| + if (allowed) { |
|
Fady Samuel
2015/03/13 01:43:06
Only do this if attached.
|
| + // Ask the embedder to go fullscreen. |
| + owner_web_contents()->GetDelegate()->EnterFullscreenModeForTab( |
| + web_contents(), origin); |
| + } |
| +} |
| + |
| +void WebViewGuest::ExitFullscreenModeForTab(content::WebContents* web_contents) { |
| + printf("+++ %s\n", __PRETTY_FUNCTION__); |
| + bool was_fullscren = is_fullscreen_; |
| + is_fullscreen_ = false; |
| + |
| + if (was_fullscren) { |
| + scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
| + args->SetString(guestview::kUrl, "teststuff"); |
| + DispatchEventToView( |
| + new GuestViewBase::Event(webview::kEventExitFullscreen, args.Pass())); |
| + } |
| +} |
| + |
| +bool WebViewGuest::IsFullscreenForTabOrPending( |
| + const content::WebContents* web_contents) const { |
| + return is_fullscreen_; |
| +} |
| + |
| +void WebViewGuest::EmbedderFullscreenToggled( |
| + bool entered_fullscreen) { |
| + printf("____ %s, entered_fullscreen: %d\n", |
| + __PRETTY_FUNCTION__, entered_fullscreen); |
| + if (!entered_fullscreen) { |
| + is_fullscreen_ = false; |
| + } |
| +} |
| + |
| void WebViewGuest::CreateWebContents( |
| const base::DictionaryValue& create_params, |
| const WebContentsCreatedCallback& callback) { |
| @@ -651,6 +706,7 @@ WebViewGuest::WebViewGuest(content::WebContents* owner_web_contents) |
| javascript_dialog_helper_(this), |
| current_zoom_factor_(1.0), |
| allow_scaling_(false), |
| + is_fullscreen_(false), |
| weak_ptr_factory_(this) { |
| web_view_guest_delegate_.reset( |
| ExtensionsAPIClient::Get()->CreateWebViewGuestDelegate(this)); |