Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Unified Diff: chromecast/browser/cast_content_browser_client.cc

Issue 1972433002: [Chromecast] Handle device scale factor correctly (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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() {

Powered by Google App Engine
This is Rietveld 408576698