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/skia/include/core/SkColor.h" 13 #include "ui/gfx/size.h" 14 15 namespace blink { 16 17 class WebNode; 18 class WebURL; 19 20 } // namespace blink 21 22 namespace android_webview { 23 24 // Render process side of AwRenderViewHostExt, this provides cross-process 25 // implementation of miscellaneous WebView functions that we need to poke 26 // WebKit directly to implement (and that aren't needed in the chrome app). 27 class AwRenderViewExt : public content::RenderViewObserver { 28 public: 29 static void RenderViewCreated(content::RenderView* render_view); 30 31 private: 32 AwRenderViewExt(content::RenderView* render_view); 33 virtual ~AwRenderViewExt(); 34 35 // RenderView::Observer: 36 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 37 virtual void FocusedNodeChanged(const blink::WebNode& node) OVERRIDE; 38 virtual void DidCommitCompositorFrame() OVERRIDE; 39 virtual void DidUpdateLayout() OVERRIDE; 40 virtual void Navigate(const GURL& url) OVERRIDE; 41 42 void OnDocumentHasImagesRequest(int id); 43 44 void OnDoHitTest(int view_x, int view_y); 45 46 void OnSetTextZoomFactor(float zoom_factor); 47 48 void OnResetScrollAndScaleState(); 49 50 void OnSetInitialPageScale(double page_scale_factor); 51 52 void OnSetBackgroundColor(SkColor c); 53 54 void UpdatePageScaleFactor(); 55 56 void CheckContentsSize(); 57 58 bool capture_picture_enabled_; 59 60 float page_scale_factor_; 61 62 gfx::Size last_sent_contents_size_; 63 base::OneShotTimer<AwRenderViewExt> check_contents_size_timer_; 64 65 DISALLOW_COPY_AND_ASSIGN(AwRenderViewExt); 66 }; 67 68 } // namespace android_webview 69 70 #endif // ANDROID_WEBVIEW_RENDERER_AW_RENDER_VIEW_EXT_H_ 71