Chromium Code Reviews| Index: chromecast/browser/cast_content_browser_client.cc |
| diff --git a/chromecast/browser/cast_content_browser_client.cc b/chromecast/browser/cast_content_browser_client.cc |
| index 39ffe59e106972dfaeda5bba64eb4660ccaef65a..731902baf32b5336e9ab6588961ff517ce5f7428 100644 |
| --- a/chromecast/browser/cast_content_browser_client.cc |
| +++ b/chromecast/browser/cast_content_browser_client.cc |
| @@ -27,6 +27,7 @@ |
| #include "chromecast/browser/cast_network_delegate.h" |
| #include "chromecast/browser/cast_quota_permission_context.h" |
| #include "chromecast/browser/cast_resource_dispatcher_host_delegate.h" |
| +#include "chromecast/browser/cast_web_contents_user_data.h" |
| #include "chromecast/browser/geolocation/cast_access_token_store.h" |
| #include "chromecast/browser/media/cma_message_filter_host.h" |
| #include "chromecast/browser/service/cast_service_simple.h" |
| @@ -50,6 +51,7 @@ |
| #include "content/public/common/web_preferences.h" |
| #include "net/ssl/ssl_cert_request_info.h" |
| #include "net/url_request/url_request_context_getter.h" |
| +#include "ui/gfx/screen.h" |
| #include "ui/gl/gl_switches.h" |
| #if defined(ENABLE_MOJO_MEDIA_IN_BROWSER_PROCESS) |
| @@ -276,13 +278,40 @@ void CastContentBrowserClient::OverrideWebkitPrefs( |
| // Enable 5% margins for WebVTT cues to keep within title-safe area |
| prefs->text_track_margin_percentage = 5; |
| + // This block of logic allows us to force 720p resolution for apps which don't |
| + // handle scaling to higher resolutions (i.e. were built assuming 720p and |
| + // have layout or performance problems at anything else). |
| + // We use the viewport tag approach and ViewportStyle::TELEVISION to force a |
| + // 720p layout viewport in this case. |
| + // TODO(halliwell): require apps to handle scaling to any resolution; then |
| + // we can simply run at the platform's native resolution. |
| #if defined(OS_ANDROID) |
| - // Enable the television style for viewport so that all cast apps have a |
| - // 1280px wide layout viewport by default. |
| + // Android has viewport enabled by default. Disable for consistency with |
| + // Linux (only enable below for 720p app case). |
| DCHECK(prefs->viewport_enabled); |
| DCHECK(prefs->viewport_meta_enabled); |
| - prefs->viewport_style = content::ViewportStyle::TELEVISION; |
| + prefs->viewport_enabled = false; |
|
alokp
2016/05/11 16:46:53
This seems risky to me. I am not sure what else we
|
| + prefs->viewport_meta_enabled = false; |
| #endif // defined(OS_ANDROID) |
| + |
| + content::WebContents* web_contents = |
| + content::WebContents::FromRenderViewHost(render_view_host); |
| + if (web_contents) { |
| + CastWebContentsUserData* user_data = |
| + static_cast<CastWebContentsUserData*>( |
| + web_contents->GetUserData(CastWebContentsUserData::UserDataKey())); |
| + if (user_data->resolution_height() == 720) { |
| + prefs->viewport_enabled = true; |
| + prefs->viewport_meta_enabled = true; |
| + prefs->viewport_style = content::ViewportStyle::TELEVISION; |
| + |
| + gfx::Size display_size = |
| + gfx::Screen::GetScreen()->GetPrimaryDisplay().size(); |
| + const float scale_factor = display_size.height() / 720.0f; |
| + prefs->default_minimum_page_scale_factor = scale_factor; |
| + prefs->default_maximum_page_scale_factor = scale_factor; |
| + } |
| + } |
| } |
| void CastContentBrowserClient::ResourceDispatcherHostCreated() { |