Skip to content

Commit

Permalink
Update Webview Webkit preferences
Browse files Browse the repository at this point in the history
Whenever we create a RenderViewHost, update it's Blink properties and
enable the scrollbar.

The scrollbar is disabled by default on Chromecast since Cast Apps are
not supposed to be scrollable. Webviews don't have such limitations so
enable scrollbars for Webviews only.

BUG=b/158124105
TEST=Manually on device with a scrollable page.

Change-Id: I0e7c8971760977568afa2a6a3eede6b28a8dd6e7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2231589
Reviewed-by: Albert Chaulk <achaulk@chromium.org>
Commit-Queue: Daniel Nicoara <dnicoara@chromium.org>
Cr-Commit-Position: refs/heads/master@{#776157}
  • Loading branch information
Daniel Nicoara authored and Commit Bot committed Jun 8, 2020
1 parent 200a610 commit b43a87a
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 11 deletions.
22 changes: 11 additions & 11 deletions chromecast/browser/webview/web_content_controller.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,17 @@ class WebContentController
void AttachTo(aura::Window* window, int window_id);

protected:
// content::WebContentsObserver
void RenderFrameCreated(content::RenderFrameHost* render_frame_host) override;
void RenderFrameDeleted(content::RenderFrameHost* render_frame_host) override;
void RenderFrameHostChanged(content::RenderFrameHost* old_host,
content::RenderFrameHost* new_host) override;
void MainFrameWasResized(bool width_changed) override;
void FrameSizeChanged(content::RenderFrameHost* render_frame_host,
const gfx::Size& frame_size) override;
void RenderViewCreated(content::RenderViewHost* render_view_host) override;
void RenderViewDeleted(content::RenderViewHost* render_view_host) override;

static void RegisterRenderWidgetInputObserverFromRenderFrameHost(
WebContentController* web_content_controller,
content::RenderFrameHost* render_frame_host);
Expand Down Expand Up @@ -111,17 +122,6 @@ class WebContentController
// exo::SurfaceObserver
void OnSurfaceDestroying(exo::Surface* surface) override;

// content::WebContentsObserver
void RenderFrameCreated(content::RenderFrameHost* render_frame_host) override;
void RenderFrameDeleted(content::RenderFrameHost* render_frame_host) override;
void RenderFrameHostChanged(content::RenderFrameHost* old_host,
content::RenderFrameHost* new_host) override;
void MainFrameWasResized(bool width_changed) override;
void FrameSizeChanged(content::RenderFrameHost* render_frame_host,
const gfx::Size& frame_size) override;
void RenderViewCreated(content::RenderViewHost* render_view_host) override;
void RenderViewDeleted(content::RenderViewHost* render_view_host) override;

// JsClientInstance::Observer
void OnJsClientInstanceRegistered(int process_id,
int routing_id,
Expand Down
14 changes: 14 additions & 0 deletions chromecast/browser/webview/webview_controller.cc
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,14 @@ class WebviewUserData : public base::SupportsUserData::Data {
WebviewController* controller_;
};

void UpdateWebkitPreferences(content::RenderViewHost* render_view_host) {
content::WebPreferences prefs = render_view_host->GetWebkitPreferences();
// Allow Webviews to show scrollbars. These are globally disabled since Cast
// Apps are not expected to be scrollable.
prefs.hide_scrollbars = false;
render_view_host->UpdateWebkitPreferences(prefs);
}

} // namespace

WebviewController::WebviewController(content::BrowserContext* browser_context,
Expand Down Expand Up @@ -165,6 +173,12 @@ void WebviewController::DidFirstVisuallyNonEmptyPaint() {
}
}

void WebviewController::RenderViewCreated(
content::RenderViewHost* render_view_host) {
WebContentController::RenderViewCreated(render_view_host);
UpdateWebkitPreferences(render_view_host);
}

void WebviewController::SendNavigationEvent(
WebviewNavigationThrottle* throttle,
content::NavigationHandle* navigation_handle) {
Expand Down
3 changes: 3 additions & 0 deletions chromecast/browser/webview/webview_controller.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,9 @@ class WebviewController : public CastWebContents::Delegate,
// content::WebContentsObserver
void DidFirstVisuallyNonEmptyPaint() override;

// WebContentController
void RenderViewCreated(content::RenderViewHost* render_view_host) override;

const bool enabled_for_dev_;
std::unique_ptr<content::WebContents> contents_;
std::unique_ptr<CastWebContents> cast_web_contents_;
Expand Down

0 comments on commit b43a87a

Please sign in to comment.