1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef ANDROID_WEBVIEW_RENDERER_AW_RENDER_VIEW_EXT_H_
6 #define ANDROID_WEBVIEW_RENDERER_AW_RENDER_VIEW_EXT_H_
8 #include "base/basictypes.h"
9 #include "base/compiler_specific.h"
10 #include "base/timer/timer.h"
11 #include "content/public/renderer/render_view_observer.h"
12 #include "third_party/WebKit/public/web/WebPermissionClient.h"
13 #include "third_party/skia/include/core/SkColor.h"
14 #include "ui/gfx/size.h"
23 namespace android_webview {
25 // Render process side of AwRenderViewHostExt, this provides cross-process
26 // implementation of miscellaneous WebView functions that we need to poke
27 // WebKit directly to implement (and that aren't needed in the chrome app).
28 class AwRenderViewExt : public content::RenderViewObserver,
29 public WebKit::WebPermissionClient {
31 static void RenderViewCreated(content::RenderView* render_view);
34 AwRenderViewExt(content::RenderView* render_view);
35 virtual ~AwRenderViewExt();
37 // RenderView::Observer:
38 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
39 virtual void DidCommitProvisionalLoad(WebKit::WebFrame* frame,
40 bool is_new_navigation) OVERRIDE;
41 virtual void FocusedNodeChanged(const WebKit::WebNode& node) OVERRIDE;
42 virtual void DidCommitCompositorFrame() OVERRIDE;
43 virtual void DidUpdateLayout() OVERRIDE;
44 virtual void Navigate(const GURL& url) OVERRIDE;
46 void OnDocumentHasImagesRequest(int id);
48 void OnDoHitTest(int view_x, int view_y);
50 void OnSetTextZoomFactor(float zoom_factor);
52 void OnResetScrollAndScaleState();
54 void OnSetInitialPageScale(double page_scale_factor);
56 void OnSetFixedLayoutSize(const gfx::Size& size);
58 void OnSetBackgroundColor(SkColor c);
60 void UpdatePageScaleFactor();
62 void CheckContentsSize();
64 // WebKit::WebPermissionClient implementation.
65 virtual bool allowDisplayingInsecureContent(
66 WebKit::WebFrame* frame,
67 bool enabled_per_settings,
68 const WebKit::WebSecurityOrigin& origin,
69 const WebKit::WebURL& url) OVERRIDE;
70 virtual bool allowRunningInsecureContent(
71 WebKit::WebFrame* frame,
72 bool enabled_per_settings,
73 const WebKit::WebSecurityOrigin& origin,
74 const WebKit::WebURL& url) OVERRIDE;
76 bool capture_picture_enabled_;
78 float page_scale_factor_;
80 gfx::Size last_sent_contents_size_;
81 base::OneShotTimer<AwRenderViewExt> check_contents_size_timer_;
83 DISALLOW_COPY_AND_ASSIGN(AwRenderViewExt);
86 } // namespace android_webview
88 #endif // ANDROID_WEBVIEW_RENDERER_AW_RENDER_VIEW_EXT_H_