forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathweb_contents_delegate_android.h
131 lines (114 loc) · 5.83 KB
/
web_contents_delegate_android.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_WEB_CONTENTS_DELEGATE_ANDROID_WEB_CONTENTS_DELEGATE_ANDROID_H_
#define COMPONENTS_WEB_CONTENTS_DELEGATE_ANDROID_WEB_CONTENTS_DELEGATE_ANDROID_H_
#include "base/android/jni_weak_ref.h"
#include "base/android/scoped_java_ref.h"
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "content/public/browser/web_contents_delegate.h"
class GURL;
namespace content {
class WebContents;
class WebContentsDelegate;
struct NativeWebKeyboardEvent;
struct OpenURLParams;
}
namespace web_contents_delegate_android {
class ValidationMessageBubbleAndroid;
enum WebContentsDelegateLogLevel {
// Equivalent of WebCore::WebConsoleMessage::LevelDebug.
WEB_CONTENTS_DELEGATE_LOG_LEVEL_DEBUG = 0,
// Equivalent of WebCore::WebConsoleMessage::LevelLog.
WEB_CONTENTS_DELEGATE_LOG_LEVEL_LOG = 1,
// Equivalent of WebCore::WebConsoleMessage::LevelWarning.
WEB_CONTENTS_DELEGATE_LOG_LEVEL_WARNING = 2,
// Equivalent of WebCore::WebConsoleMessage::LevelError.
WEB_CONTENTS_DELEGATE_LOG_LEVEL_ERROR = 3,
};
// Native underpinnings of WebContentsDelegateAndroid.java. Provides a default
// delegate for WebContents to forward calls to the java peer. The embedding
// application may subclass and override methods on either the C++ or Java side
// as required.
class WebContentsDelegateAndroid : public content::WebContentsDelegate {
public:
WebContentsDelegateAndroid(JNIEnv* env, jobject obj);
~WebContentsDelegateAndroid() override;
// Binds this WebContentsDelegateAndroid to the passed WebContents instance,
// such that when that WebContents is destroyed, this
// WebContentsDelegateAndroid instance will be destroyed too.
void SetOwnerWebContents(content::WebContents* contents);
// Overridden from WebContentsDelegate:
content::WebContents* OpenURLFromTab(
content::WebContents* source,
const content::OpenURLParams& params) override;
content::ColorChooser* OpenColorChooser(
content::WebContents* source,
SkColor color,
const std::vector<content::ColorSuggestion>& suggestions) override;
void NavigationStateChanged(content::WebContents* source,
content::InvalidateTypes changed_flags) override;
void VisibleSSLStateChanged(const content::WebContents* source) override;
void ActivateContents(content::WebContents* contents) override;
void DeactivateContents(content::WebContents* contents) override;
void LoadingStateChanged(content::WebContents* source,
bool to_different_document) override;
void LoadProgressChanged(content::WebContents* source,
double load_progress) override;
void RendererUnresponsive(content::WebContents* source) override;
void RendererResponsive(content::WebContents* source) override;
void DidNavigateToPendingEntry(content::WebContents* source) override;
void WebContentsCreated(content::WebContents* source_contents,
int opener_render_frame_id,
const base::string16& frame_name,
const GURL& target_url,
content::WebContents* new_contents) override;
bool ShouldCreateWebContents(
content::WebContents* web_contents,
int route_id,
int main_frame_route_id,
WindowContainerType window_container_type,
const base::string16& frame_name,
const GURL& target_url,
const std::string& partition_id,
content::SessionStorageNamespace* session_storage_namespace) override;
bool OnGoToEntryOffset(int offset) override;
void CloseContents(content::WebContents* source) override;
void MoveContents(content::WebContents* source,
const gfx::Rect& pos) override;
bool AddMessageToConsole(content::WebContents* source,
int32 level,
const base::string16& message,
int32 line_no,
const base::string16& source_id) override;
void UpdateTargetURL(content::WebContents* source, const GURL& url) override;
void HandleKeyboardEvent(
content::WebContents* source,
const content::NativeWebKeyboardEvent& event) override;
bool TakeFocus(content::WebContents* source, bool reverse) override;
void ShowRepostFormWarningDialog(content::WebContents* source) override;
void EnterFullscreenModeForTab(content::WebContents* web_contents,
const GURL& origin) override;
void ExitFullscreenModeForTab(content::WebContents* web_contents) override;
bool IsFullscreenForTabOrPending(
const content::WebContents* web_contents) const override;
void ShowValidationMessage(content::WebContents* web_contents,
const gfx::Rect& anchor_in_root_view,
const base::string16& main_text,
const base::string16& sub_text) override;
void HideValidationMessage(content::WebContents* web_contents) override;
void MoveValidationMessage(content::WebContents* web_contents,
const gfx::Rect& anchor_in_root_view) override;
protected:
base::android::ScopedJavaLocalRef<jobject> GetJavaDelegate(JNIEnv* env) const;
private:
// We depend on the java side user of WebContentDelegateAndroid to hold a
// strong reference to that object as long as they want to receive callbacks
// on it. Using a weak ref here allows it to be correctly GCed.
JavaObjectWeakGlobalRef weak_java_delegate_;
scoped_ptr<ValidationMessageBubbleAndroid> validation_message_bubble_;
};
bool RegisterWebContentsDelegateAndroid(JNIEnv* env);
} // namespace web_contents_delegate_android
#endif // COMPONENTS_WEB_CONTENTS_DELEGATE_ANDROID_WEB_CONTENTS_DELEGATE_ANDROID_H_