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 CHROME_BROWSER_ANDROID_CHROME_WEB_CONTENTS_DELEGATE_ANDROID_H_ 6 #define CHROME_BROWSER_ANDROID_CHROME_WEB_CONTENTS_DELEGATE_ANDROID_H_ 7 8 #include <jni.h> 9 10 #include "base/files/file_path.h" 11 #include "components/web_contents_delegate_android/web_contents_delegate_android.h" 12 #include "content/public/browser/notification_observer.h" 13 #include "content/public/browser/notification_registrar.h" 14 15 class FindNotificationDetails; 16 17 namespace content { 18 struct FileChooserParams; 19 class WebContents; 20 } 21 22 namespace gfx { 23 class Rect; 24 class RectF; 25 } 26 27 namespace chrome { 28 namespace android { 29 30 // Chromium Android specific WebContentsDelegate. 31 // Should contain any WebContentsDelegate implementations required by 32 // the Chromium Android port but not to be shared with WebView. 33 class ChromeWebContentsDelegateAndroid 34 : public web_contents_delegate_android::WebContentsDelegateAndroid, 35 public content::NotificationObserver { 36 public: 37 ChromeWebContentsDelegateAndroid(JNIEnv* env, jobject obj); 38 virtual ~ChromeWebContentsDelegateAndroid(); 39 40 virtual void RunFileChooser(content::WebContents* web_contents, 41 const content::FileChooserParams& params) 42 OVERRIDE; 43 virtual void CloseContents(content::WebContents* web_contents) OVERRIDE; 44 virtual void FindReply(content::WebContents* web_contents, 45 int request_id, 46 int number_of_matches, 47 const gfx::Rect& selection_rect, 48 int active_match_ordinal, 49 bool final_update) OVERRIDE; 50 virtual void FindMatchRectsReply(content::WebContents* web_contents, 51 int version, 52 const std::vector<gfx::RectF>& rects, 53 const gfx::RectF& active_rect) OVERRIDE; 54 virtual content::JavaScriptDialogManager* 55 GetJavaScriptDialogManager() OVERRIDE; 56 virtual void RequestMediaAccessPermission( 57 content::WebContents* web_contents, 58 const content::MediaStreamRequest& request, 59 const content::MediaResponseCallback& callback) OVERRIDE; 60 virtual bool RequestPpapiBrokerPermission( 61 content::WebContents* web_contents, 62 const GURL& url, 63 const base::FilePath& plugin_path, 64 const base::Callback<void(bool)>& callback) OVERRIDE; 65 66 private: 67 // NotificationObserver implementation. 68 virtual void Observe(int type, 69 const content::NotificationSource& source, 70 const content::NotificationDetails& details) OVERRIDE; 71 72 void OnFindResultAvailable(content::WebContents* web_contents, 73 const FindNotificationDetails* find_result); 74 75 content::NotificationRegistrar notification_registrar_; 76 }; 77 78 // Register the native methods through JNI. 79 bool RegisterChromeWebContentsDelegateAndroid(JNIEnv* env); 80 81 } // namespace android 82 } // namespace chrome 83 84 #endif // CHROME_BROWSER_ANDROID_CHROME_WEB_CONTENTS_DELEGATE_ANDROID_H_ 85