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_NATIVE_AW_WEB_CONTENTS_DELEGATE_H_
6#define ANDROID_WEBVIEW_NATIVE_AW_WEB_CONTENTS_DELEGATE_H_
7
8#include <jni.h>
9
10#include "components/web_contents_delegate_android/web_contents_delegate_android.h"
11
12namespace android_webview {
13
14// WebView specific WebContentsDelegate.
15// Should contain WebContentsDelegate code required by WebView that should not
16// be part of the Chromium Android port.
17class AwWebContentsDelegate
18    : public web_contents_delegate_android::WebContentsDelegateAndroid {
19 public:
20  AwWebContentsDelegate(JNIEnv* env, jobject obj);
21  virtual ~AwWebContentsDelegate();
22  virtual content::JavaScriptDialogManager* GetJavaScriptDialogManager()
23      OVERRIDE;
24  virtual void FindReply(content::WebContents* web_contents,
25                         int request_id,
26                         int number_of_matches,
27                         const gfx::Rect& selection_rect,
28                         int active_match_ordinal,
29                         bool final_update) OVERRIDE;
30  virtual void CanDownload(content::RenderViewHost* source,
31                           int request_id,
32                           const std::string& request_method,
33                           const base::Callback<void(bool)>& callback) OVERRIDE;
34  virtual void RunFileChooser(
35      content::WebContents* web_contents,
36      const content::FileChooserParams& params) OVERRIDE;
37  virtual void AddNewContents(content::WebContents* source,
38                              content::WebContents* new_contents,
39                              WindowOpenDisposition disposition,
40                              const gfx::Rect& initial_pos,
41                              bool user_gesture,
42                              bool* was_blocked) OVERRIDE;
43
44  virtual void WebContentsCreated(content::WebContents* source_contents,
45                                  int64 source_frame_id,
46                                  const string16& frame_name,
47                                  const GURL& target_url,
48                                  content::WebContents* new_contents) OVERRIDE;
49
50  virtual void CloseContents(content::WebContents* source) OVERRIDE;
51  virtual void ActivateContents(content::WebContents* contents) OVERRIDE;
52  virtual void RequestProtectedMediaIdentifierPermission(
53      const content::WebContents* web_contents,
54      const GURL& frame_url,
55      const base::Callback<void(bool)>& callback) OVERRIDE;
56};
57
58bool RegisterAwWebContentsDelegate(JNIEnv* env);
59
60}  // namespace android_webview
61
62#endif  // ANDROID_WEBVIEW_NATIVE_AW_WEB_CONTENTS_DELEGATE_H_
63