Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3056)

Unified Diff: chrome/browser/component/web_contents_delegate_android/web_contents_delegate_android.cc

Issue 11365199: Move WebContentsDelegateAndroid to content/components (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/component/web_contents_delegate_android/web_contents_delegate_android.cc
diff --git a/chrome/browser/component/web_contents_delegate_android/web_contents_delegate_android.cc b/chrome/browser/component/web_contents_delegate_android/web_contents_delegate_android.cc
deleted file mode 100644
index b0dc6ae13c67b0c6c156f6039a58735d18ad7b47..0000000000000000000000000000000000000000
--- a/chrome/browser/component/web_contents_delegate_android/web_contents_delegate_android.cc
+++ /dev/null
@@ -1,318 +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 "chrome/browser/component/web_contents_delegate_android/web_contents_delegate_android.h"
-
-#include <android/keycodes.h>
-
-#include "base/android/jni_android.h"
-#include "base/android/jni_string.h"
-#include "content/public/browser/android/content_view_core.h"
-#include "content/public/browser/render_widget_host_view.h"
-#include "content/public/browser/invalidate_type.h"
-#include "content/public/browser/page_navigator.h"
-#include "content/public/browser/navigation_controller.h"
-#include "content/public/browser/navigation_entry.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/gfx/rect.h"
-#include "webkit/glue/window_open_disposition.h"
-
-using base::android::AttachCurrentThread;
-using base::android::ConvertUTF8ToJavaString;
-using base::android::ConvertUTF16ToJavaString;
-using base::android::HasClass;
-using base::android::ScopedJavaLocalRef;
-using content::WebContents;
-
-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
-// ----------------------------------------------------------------------------
-
-// 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());
- Java_WebContentsDelegateAndroid_openNewTab(env,
- obj.obj(),
- java_url.obj(),
- disposition == OFF_THE_RECORD);
- return NULL;
- }
-
- source->GetController().LoadURL(url, params.referrer, transition,
- std::string());
- return source;
-}
-
-void WebContentsDelegateAndroid::NavigationStateChanged(
- const WebContents* source, unsigned changed_flags) {
- if (changed_flags & content::INVALIDATE_TYPE_TITLE) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
- if (obj.is_null())
- return;
- Java_WebContentsDelegateAndroid_onTitleUpdated(
- env, obj.obj());
- }
-}
-
-void WebContentsDelegateAndroid::AddNewContents(
- WebContents* source,
- WebContents* new_contents,
- WindowOpenDisposition disposition,
- const gfx::Rect& initial_pos,
- bool user_gesture,
- bool* was_blocked) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
- bool handled = false;
- if (!obj.is_null()) {
- handled = Java_WebContentsDelegateAndroid_addNewContents(
- env,
- obj.obj(),
- reinterpret_cast<jint>(source),
- reinterpret_cast<jint>(new_contents),
- static_cast<jint>(disposition),
- NULL,
- user_gesture);
- }
- if (!handled)
- delete new_contents;
-}
-
-void WebContentsDelegateAndroid::ActivateContents(WebContents* contents) {
- // TODO(dtrainor) When doing the merge I came across this. Should we be
- // activating this tab here?
-}
-
-void WebContentsDelegateAndroid::DeactivateContents(WebContents* contents) {
- // Do nothing.
-}
-
-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_onLoadProgressChanged(
- env,
- obj.obj(),
- progress);
-}
-
-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 string16& message,
- int32 line_no,
- const 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_TIP;
- switch (level) {
- case logging::LOG_VERBOSE:
- jlevel = WEB_CONTENTS_DELEGATE_LOG_LEVEL_TIP;
- 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());
-}
-
-// TODO(merge): WARNING! method no longer available on the base class.
-// See http://crbug.com/149477
-void WebContentsDelegateAndroid::URLStarredChanged(WebContents* source,
- bool starred) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
- if (obj.is_null())
- return;
- Java_WebContentsDelegateAndroid_onUrlStarredChanged(env, obj.obj(), starred);
-}
-
-// 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(
- content::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());
-}
-
-// ----------------------------------------------------------------------------
-// Native JNI methods
-// ----------------------------------------------------------------------------
-
-// Register native methods
-
-bool RegisterWebContentsDelegateAndroid(JNIEnv* env) {
- if (!HasClass(env, kWebContentsDelegateAndroidClassPath)) {
- DLOG(ERROR) << "Unable to find class WebContentsDelegateAndroid!";
- return false;
- }
- return RegisterNativesImpl(env);
-}
-
-} // namespace web_contents_delegate_android

Powered by Google App Engine
This is Rietveld 408576698