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 LoadingStateChanged(content::WebContents* source, 41 bool to_different_document) OVERRIDE; 42 virtual void RunFileChooser(content::WebContents* web_contents, 43 const content::FileChooserParams& params) 44 OVERRIDE; 45 virtual void CloseContents(content::WebContents* web_contents) OVERRIDE; 46 virtual void FindReply(content::WebContents* web_contents, 47 int request_id, 48 int number_of_matches, 49 const gfx::Rect& selection_rect, 50 int active_match_ordinal, 51 bool final_update) OVERRIDE; 52 virtual void FindMatchRectsReply(content::WebContents* web_contents, 53 int version, 54 const std::vector<gfx::RectF>& rects, 55 const gfx::RectF& active_rect) OVERRIDE; 56 virtual content::JavaScriptDialogManager* 57 GetJavaScriptDialogManager() OVERRIDE; 58 virtual void RequestMediaAccessPermission( 59 content::WebContents* web_contents, 60 const content::MediaStreamRequest& request, 61 const content::MediaResponseCallback& callback) OVERRIDE; 62 virtual bool RequestPpapiBrokerPermission( 63 content::WebContents* web_contents, 64 const GURL& url, 65 const base::FilePath& plugin_path, 66 const base::Callback<void(bool)>& callback) OVERRIDE; 67 virtual content::WebContents* OpenURLFromTab( 68 content::WebContents* source, 69 const content::OpenURLParams& params) OVERRIDE; 70 virtual void AddNewContents(content::WebContents* source, 71 content::WebContents* new_contents, 72 WindowOpenDisposition disposition, 73 const gfx::Rect& initial_pos, 74 bool user_gesture, 75 bool* was_blocked) OVERRIDE; 76 virtual void WebContentsCreated(content::WebContents* source_contents, 77 int opener_render_frame_id, 78 const base::string16& frame_name, 79 const GURL& target_url, 80 content::WebContents* new_contents) OVERRIDE; 81 private: 82 // NotificationObserver implementation. 83 virtual void Observe(int type, 84 const content::NotificationSource& source, 85 const content::NotificationDetails& details) OVERRIDE; 86 87 void OnFindResultAvailable(content::WebContents* web_contents, 88 const FindNotificationDetails* find_result); 89 90 content::NotificationRegistrar notification_registrar_; 91 }; 92 93 // Register the native methods through JNI. 94 bool RegisterChromeWebContentsDelegateAndroid(JNIEnv* env); 95 96 } // namespace android 97 } // namespace chrome 98 99 #endif // CHROME_BROWSER_ANDROID_CHROME_WEB_CONTENTS_DELEGATE_ANDROID_H_ 100