summaryrefslogtreecommitdiffstats
path: root/chromium/components/web_contents_delegate_android/web_contents_delegate_android.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/components/web_contents_delegate_android/web_contents_delegate_android.cc')
-rw-r--r--chromium/components/web_contents_delegate_android/web_contents_delegate_android.cc357
1 files changed, 0 insertions, 357 deletions
diff --git a/chromium/components/web_contents_delegate_android/web_contents_delegate_android.cc b/chromium/components/web_contents_delegate_android/web_contents_delegate_android.cc
deleted file mode 100644
index e1c91fd1f3c..00000000000
--- a/chromium/components/web_contents_delegate_android/web_contents_delegate_android.cc
+++ /dev/null
@@ -1,357 +0,0 @@
-// 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.
-
-#include "components/web_contents_delegate_android/web_contents_delegate_android.h"
-
-#include <android/keycodes.h>
-
-#include "base/android/jni_android.h"
-#include "base/android/jni_array.h"
-#include "base/android/jni_string.h"
-#include "components/web_contents_delegate_android/color_chooser_android.h"
-#include "components/web_contents_delegate_android/validation_message_bubble_android.h"
-#include "content/public/browser/android/content_view_core.h"
-#include "content/public/browser/color_chooser.h"
-#include "content/public/browser/invalidate_type.h"
-#include "content/public/browser/native_web_keyboard_event.h"
-#include "content/public/browser/page_navigator.h"
-#include "content/public/browser/render_widget_host_view.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/common/page_transition_types.h"
-#include "content/public/common/referrer.h"
-#include "jni/WebContentsDelegateAndroid_jni.h"
-#include "ui/base/window_open_disposition.h"
-#include "ui/gfx/rect.h"
-#include "url/gurl.h"
-
-using base::android::AttachCurrentThread;
-using base::android::ConvertUTF8ToJavaString;
-using base::android::ConvertUTF16ToJavaString;
-using base::android::ScopedJavaLocalRef;
-using content::ColorChooser;
-using content::RenderWidgetHostView;
-using content::WebContents;
-using content::WebContentsDelegate;
-
-namespace web_contents_delegate_android {
-
-WebContentsDelegateAndroid::WebContentsDelegateAndroid(JNIEnv* env, jobject obj)
- : weak_java_delegate_(env, obj) {
-}
-
-WebContentsDelegateAndroid::~WebContentsDelegateAndroid() {
-}
-
-ScopedJavaLocalRef<jobject>
-WebContentsDelegateAndroid::GetJavaDelegate(JNIEnv* env) const {
- return weak_java_delegate_.get(env);
-}
-
-// ----------------------------------------------------------------------------
-// WebContentsDelegate methods
-// ----------------------------------------------------------------------------
-
-ColorChooser* WebContentsDelegateAndroid::OpenColorChooser(
- WebContents* source,
- SkColor color,
- const std::vector<content::ColorSuggestion>& suggestions) {
- return new ColorChooserAndroid(source, color, suggestions);
-}
-
-// OpenURLFromTab() will be called when we're performing a browser-intiated
-// navigation. The most common scenario for this is opening new tabs (see
-// RenderViewImpl::decidePolicyForNavigation for more details).
-WebContents* WebContentsDelegateAndroid::OpenURLFromTab(
- WebContents* source,
- const content::OpenURLParams& params) {
- const GURL& url = params.url;
- WindowOpenDisposition disposition = params.disposition;
- content::PageTransition transition(
- PageTransitionFromInt(params.transition));
-
- if (!source || (disposition != CURRENT_TAB &&
- disposition != NEW_FOREGROUND_TAB &&
- disposition != NEW_BACKGROUND_TAB &&
- disposition != OFF_THE_RECORD)) {
- NOTIMPLEMENTED();
- return NULL;
- }
-
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
- if (obj.is_null())
- return WebContentsDelegate::OpenURLFromTab(source, params);
-
- if (disposition == NEW_FOREGROUND_TAB ||
- disposition == NEW_BACKGROUND_TAB ||
- disposition == OFF_THE_RECORD) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jstring> java_url =
- ConvertUTF8ToJavaString(env, url.spec());
- ScopedJavaLocalRef<jstring> extra_headers =
- ConvertUTF8ToJavaString(env, params.extra_headers);
- ScopedJavaLocalRef<jbyteArray> post_data;
- if (params.uses_post &&
- params.browser_initiated_post_data.get() &&
- params.browser_initiated_post_data.get()->size()) {
- post_data = base::android::ToJavaByteArray(
- env,
- reinterpret_cast<const uint8*>(
- params.browser_initiated_post_data.get()->front()),
- params.browser_initiated_post_data.get()->size());
- }
- Java_WebContentsDelegateAndroid_openNewTab(env,
- obj.obj(),
- java_url.obj(),
- extra_headers.obj(),
- post_data.obj(),
- disposition);
- return NULL;
- }
-
- source->GetController().LoadURL(url, params.referrer, transition,
- std::string());
- return source;
-}
-
-void WebContentsDelegateAndroid::NavigationStateChanged(
- const WebContents* source, unsigned changed_flags) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
- if (obj.is_null())
- return;
- Java_WebContentsDelegateAndroid_navigationStateChanged(
- env,
- obj.obj(),
- changed_flags);
-}
-
-void WebContentsDelegateAndroid::ActivateContents(WebContents* contents) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
- if (obj.is_null())
- return;
- Java_WebContentsDelegateAndroid_activateContents(env, obj.obj());
-}
-
-void WebContentsDelegateAndroid::DeactivateContents(WebContents* contents) {
- // On desktop the current window is deactivated here, bringing the next window
- // to focus. Not implemented on Android.
-}
-
-void WebContentsDelegateAndroid::LoadingStateChanged(WebContents* source) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
- if (obj.is_null())
- return;
- bool has_stopped = source == NULL || !source->IsLoading();
-
- if (has_stopped)
- Java_WebContentsDelegateAndroid_onLoadStopped(env, obj.obj());
- else
- Java_WebContentsDelegateAndroid_onLoadStarted(env, obj.obj());
-}
-
-void WebContentsDelegateAndroid::LoadProgressChanged(WebContents* source,
- double progress) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
- if (obj.is_null())
- return;
- Java_WebContentsDelegateAndroid_notifyLoadProgressChanged(
- env,
- obj.obj(),
- progress);
-}
-
-void WebContentsDelegateAndroid::RendererUnresponsive(WebContents* source) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
- if (obj.is_null())
- return;
- Java_WebContentsDelegateAndroid_rendererUnresponsive(env, obj.obj());
-}
-
-void WebContentsDelegateAndroid::RendererResponsive(WebContents* source) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
- if (obj.is_null())
- return;
- Java_WebContentsDelegateAndroid_rendererResponsive(env, obj.obj());
-}
-
-void WebContentsDelegateAndroid::CloseContents(WebContents* source) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
- if (obj.is_null())
- return;
- Java_WebContentsDelegateAndroid_closeContents(env, obj.obj());
-}
-
-void WebContentsDelegateAndroid::MoveContents(WebContents* source,
- const gfx::Rect& pos) {
- // Do nothing.
-}
-
-bool WebContentsDelegateAndroid::AddMessageToConsole(
- WebContents* source,
- int32 level,
- const base::string16& message,
- int32 line_no,
- const base::string16& source_id) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
- if (obj.is_null())
- return WebContentsDelegate::AddMessageToConsole(source, level, message,
- line_no, source_id);
- ScopedJavaLocalRef<jstring> jmessage(ConvertUTF16ToJavaString(env, message));
- ScopedJavaLocalRef<jstring> jsource_id(
- ConvertUTF16ToJavaString(env, source_id));
- int jlevel = WEB_CONTENTS_DELEGATE_LOG_LEVEL_DEBUG;
- switch (level) {
- case logging::LOG_VERBOSE:
- jlevel = WEB_CONTENTS_DELEGATE_LOG_LEVEL_DEBUG;
- break;
- case logging::LOG_INFO:
- jlevel = WEB_CONTENTS_DELEGATE_LOG_LEVEL_LOG;
- break;
- case logging::LOG_WARNING:
- jlevel = WEB_CONTENTS_DELEGATE_LOG_LEVEL_WARNING;
- break;
- case logging::LOG_ERROR:
- jlevel = WEB_CONTENTS_DELEGATE_LOG_LEVEL_ERROR;
- break;
- default:
- NOTREACHED();
- }
- return Java_WebContentsDelegateAndroid_addMessageToConsole(
- env,
- GetJavaDelegate(env).obj(),
- jlevel,
- jmessage.obj(),
- line_no,
- jsource_id.obj());
-}
-
-// This is either called from TabContents::DidNavigateMainFramePostCommit() with
-// an empty GURL or responding to RenderViewHost::OnMsgUpateTargetURL(). In
-// Chrome, the latter is not always called, especially not during history
-// navigation. So we only handle the first case and pass the source TabContents'
-// url to Java to update the UI.
-void WebContentsDelegateAndroid::UpdateTargetURL(WebContents* source,
- int32 page_id,
- const GURL& url) {
- if (!url.is_empty())
- return;
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
- if (obj.is_null())
- return;
- ScopedJavaLocalRef<jstring> java_url =
- ConvertUTF8ToJavaString(env, source->GetURL().spec());
- Java_WebContentsDelegateAndroid_onUpdateUrl(env,
- obj.obj(),
- java_url.obj());
-}
-
-void WebContentsDelegateAndroid::HandleKeyboardEvent(
- WebContents* source,
- const content::NativeWebKeyboardEvent& event) {
- jobject key_event = event.os_event;
- if (key_event) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
- if (obj.is_null())
- return;
- Java_WebContentsDelegateAndroid_handleKeyboardEvent(
- env, obj.obj(), key_event);
- }
-}
-
-bool WebContentsDelegateAndroid::TakeFocus(WebContents* source, bool reverse) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
- if (obj.is_null())
- return WebContentsDelegate::TakeFocus(source, reverse);
- return Java_WebContentsDelegateAndroid_takeFocus(
- env, obj.obj(), reverse);
-}
-
-void WebContentsDelegateAndroid::ShowRepostFormWarningDialog(
- WebContents* source) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
- if (obj.is_null())
- return;
- ScopedJavaLocalRef<jobject> content_view_core =
- content::ContentViewCore::FromWebContents(source)->GetJavaObject();
- if (content_view_core.is_null())
- return;
- Java_WebContentsDelegateAndroid_showRepostFormWarningDialog(env, obj.obj(),
- content_view_core.obj());
-}
-
-void WebContentsDelegateAndroid::ToggleFullscreenModeForTab(
- WebContents* web_contents,
- bool enter_fullscreen) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
- if (obj.is_null())
- return;
- Java_WebContentsDelegateAndroid_toggleFullscreenModeForTab(
- env, obj.obj(), enter_fullscreen);
-}
-
-bool WebContentsDelegateAndroid::IsFullscreenForTabOrPending(
- const WebContents* web_contents) const {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
- if (obj.is_null())
- return false;
- return Java_WebContentsDelegateAndroid_isFullscreenForTabOrPending(
- env, obj.obj());
-}
-
-void WebContentsDelegateAndroid::ShowValidationMessage(
- WebContents* web_contents,
- const gfx::Rect& anchor_in_root_view,
- const string16& main_text,
- const string16& sub_text) {
- RenderWidgetHostView* rwhv = web_contents->GetRenderWidgetHostView();
- if (rwhv) {
- validation_message_bubble_.reset(
- new ValidationMessageBubbleAndroid(rwhv->GetRenderWidgetHost(),
- anchor_in_root_view,
- main_text,
- sub_text));
- }
-}
-
-void WebContentsDelegateAndroid::HideValidationMessage(
- WebContents* web_contents) {
- validation_message_bubble_.reset();
-}
-
-void WebContentsDelegateAndroid::MoveValidationMessage(
- WebContents* web_contents,
- const gfx::Rect& anchor_in_root_view) {
- if (!validation_message_bubble_)
- return;
- RenderWidgetHostView* rwhv = web_contents->GetRenderWidgetHostView();
- if (rwhv) {
- validation_message_bubble_->SetPositionRelativeToAnchor(
- rwhv->GetRenderWidgetHost(), anchor_in_root_view);
- }
-}
-// ----------------------------------------------------------------------------
-// Native JNI methods
-// ----------------------------------------------------------------------------
-
-// Register native methods
-
-bool RegisterWebContentsDelegateAndroid(JNIEnv* env) {
- return RegisterNativesImpl(env);
-}
-
-} // namespace web_contents_delegate_android