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 CONTENT_PUBLIC_BROWSER_ANDROID_CONTENT_VIEW_CORE_H_ 6 #define CONTENT_PUBLIC_BROWSER_ANDROID_CONTENT_VIEW_CORE_H_ 7 8 #include <jni.h> 9 10 #include "base/android/scoped_java_ref.h" 11 #include "base/callback.h" 12 #include "content/common/content_export.h" 13 #include "content/public/browser/navigation_controller.h" 14 #include "ui/gfx/rect.h" 15 16 class SkBitmap; 17 18 namespace cc { 19 class Layer; 20 } 21 22 namespace gfx { 23 class Size; 24 class SizeF; 25 class Vector2dF; 26 } 27 28 namespace ui { 29 class ViewAndroid; 30 class WindowAndroid; 31 } 32 33 namespace content { 34 class WebContents; 35 36 // Native side of the ContentViewCore.java, which is the primary way of 37 // communicating with the native Chromium code on Android. This is a 38 // public interface used by native code outside of the content module. 39 class CONTENT_EXPORT ContentViewCore { 40 public: 41 // Returns the existing ContentViewCore for |web_contents|, or NULL. 42 static ContentViewCore* FromWebContents(WebContents* web_contents); 43 static ContentViewCore* GetNativeContentViewCore(JNIEnv* env, jobject obj); 44 45 virtual WebContents* GetWebContents() const = 0; 46 virtual base::android::ScopedJavaLocalRef<jobject> GetJavaObject() = 0; 47 virtual ui::ViewAndroid* GetViewAndroid() const = 0; 48 virtual ui::WindowAndroid* GetWindowAndroid() const = 0; 49 virtual scoped_refptr<cc::Layer> GetLayer() const = 0; 50 virtual void LoadUrl(NavigationController::LoadURLParams& params) = 0; 51 virtual void ShowPastePopup(int x, int y) = 0; 52 53 // Request a scaled content readback. The result is passed through the 54 // callback. The boolean parameter indicates whether the readback was a 55 // success or not. The content is passed through the SkBitmap parameter. 56 virtual void GetScaledContentBitmap( 57 float scale, 58 jobject bitmap_config, 59 gfx::Rect src_rect, 60 const base::Callback<void(bool, const SkBitmap&)>& result_callback) = 0; 61 virtual float GetDpiScale() const = 0; 62 virtual void PauseVideo() = 0; 63 virtual void PauseOrResumeGeolocation(bool should_pause) = 0; 64 virtual void PauseOrResumeVideoCaptureStream(bool should_pause) = 0; 65 66 // Observer callback for frame metadata updates. 67 typedef base::Callback<void( 68 const gfx::SizeF& content_size, 69 const gfx::Vector2dF& scroll_offset, 70 float page_scale_factor)> UpdateFrameInfoCallback; 71 72 // Text surrounding selection. 73 virtual void RequestTextSurroundingSelection( 74 int max_length, 75 const base::Callback<void(const base::string16& content, 76 int start_offset, 77 int end_offset)>& callback) = 0; 78 79 protected: 80 virtual ~ContentViewCore() {}; 81 }; 82 83 }; // namespace content 84 85 #endif // CONTENT_PUBLIC_BROWSER_ANDROID_CONTENT_VIEW_CORE_H_ 86