- add sources.
[platform/framework/web/crosswalk.git] / src / android_webview / renderer / aw_render_view_ext.h
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.
4
5 #ifndef ANDROID_WEBVIEW_RENDERER_AW_RENDER_VIEW_EXT_H_
6 #define ANDROID_WEBVIEW_RENDERER_AW_RENDER_VIEW_EXT_H_
7
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"
15
16 namespace WebKit {
17
18 class WebNode;
19 class WebURL;
20
21 }  // namespace WebKit
22
23 namespace android_webview {
24
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 {
30  public:
31   static void RenderViewCreated(content::RenderView* render_view);
32
33  private:
34   AwRenderViewExt(content::RenderView* render_view);
35   virtual ~AwRenderViewExt();
36
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;
45
46   void OnDocumentHasImagesRequest(int id);
47
48   void OnDoHitTest(int view_x, int view_y);
49
50   void OnSetTextZoomFactor(float zoom_factor);
51
52   void OnResetScrollAndScaleState();
53
54   void OnSetInitialPageScale(double page_scale_factor);
55
56   void OnSetFixedLayoutSize(const gfx::Size& size);
57
58   void OnSetBackgroundColor(SkColor c);
59
60   void UpdatePageScaleFactor();
61
62   void CheckContentsSize();
63
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;
75
76   bool capture_picture_enabled_;
77
78   float page_scale_factor_;
79
80   gfx::Size last_sent_contents_size_;
81   base::OneShotTimer<AwRenderViewExt> check_contents_size_timer_;
82
83   DISALLOW_COPY_AND_ASSIGN(AwRenderViewExt);
84 };
85
86 }  // namespace android_webview
87
88 #endif  // ANDROID_WEBVIEW_RENDERER_AW_RENDER_VIEW_EXT_H_