summaryrefslogtreecommitdiff
path: root/chromium/content/browser/android/web_contents_observer_android.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/android/web_contents_observer_android.cc')
-rw-r--r--chromium/content/browser/android/web_contents_observer_android.cc325
1 files changed, 0 insertions, 325 deletions
diff --git a/chromium/content/browser/android/web_contents_observer_android.cc b/chromium/content/browser/android/web_contents_observer_android.cc
deleted file mode 100644
index acadf8d85a3..00000000000
--- a/chromium/content/browser/android/web_contents_observer_android.cc
+++ /dev/null
@@ -1,325 +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 "content/browser/android/web_contents_observer_android.h"
-
-#include <string>
-
-#include <jni.h>
-
-#include "base/android/jni_android.h"
-#include "base/android/jni_string.h"
-#include "base/android/scoped_java_ref.h"
-#include "content/browser/renderer_host/render_widget_host_impl.h"
-#include "content/browser/web_contents/web_contents_impl.h"
-#include "content/public/browser/navigation_details.h"
-#include "content/public/browser/navigation_entry.h"
-#include "jni/WebContentsObserver_jni.h"
-
-using base::android::AttachCurrentThread;
-using base::android::ScopedJavaLocalRef;
-using base::android::ConvertUTF8ToJavaString;
-using base::android::ConvertUTF16ToJavaString;
-
-namespace content {
-
-// TODO(dcheng): File a bug. This class incorrectly passes just a frame ID,
-// which is not sufficient to identify a frame (since frame IDs are scoped per
-// render process, and so may collide).
-WebContentsObserverAndroid::WebContentsObserverAndroid(
- JNIEnv* env,
- jobject obj,
- WebContents* web_contents)
- : WebContentsObserver(web_contents),
- weak_java_observer_(env, obj){
-}
-
-WebContentsObserverAndroid::~WebContentsObserverAndroid() {
-}
-
-jlong Init(JNIEnv* env, jobject obj, jobject java_web_contents) {
- WebContents* web_contents =
- WebContents::FromJavaWebContents(java_web_contents);
- CHECK(web_contents);
-
- WebContentsObserverAndroid* native_observer = new WebContentsObserverAndroid(
- env, obj, web_contents);
- return reinterpret_cast<intptr_t>(native_observer);
-}
-
-void WebContentsObserverAndroid::Destroy(JNIEnv* env, jobject obj) {
- delete this;
-}
-
-void WebContentsObserverAndroid::WebContentsDestroyed() {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
- if (obj.is_null()) {
- delete this;
- } else {
- // The java side will destroy |this|
- Java_WebContentsObserver_detachFromWebContents(env, obj.obj());
- }
-}
-
-void WebContentsObserverAndroid::RenderProcessGone(
- base::TerminationStatus termination_status) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
- if (obj.is_null())
- return;
- jboolean was_oom_protected =
- termination_status == base::TERMINATION_STATUS_OOM_PROTECTED;
- Java_WebContentsObserver_renderProcessGone(
- env, obj.obj(), was_oom_protected);
-}
-
-void WebContentsObserverAndroid::DidStartLoading(
- RenderViewHost* render_view_host) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
- if (obj.is_null())
- return;
- ScopedJavaLocalRef<jstring> jstring_url(ConvertUTF8ToJavaString(
- env, web_contents()->GetVisibleURL().spec()));
- Java_WebContentsObserver_didStartLoading(
- env, obj.obj(), jstring_url.obj());
-}
-
-void WebContentsObserverAndroid::DidStopLoading(
- RenderViewHost* render_view_host) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
- if (obj.is_null())
- return;
- ScopedJavaLocalRef<jstring> jstring_url(ConvertUTF8ToJavaString(
- env, web_contents()->GetLastCommittedURL().spec()));
- Java_WebContentsObserver_didStopLoading(
- env, obj.obj(), jstring_url.obj());
-}
-
-void WebContentsObserverAndroid::DidFailProvisionalLoad(
- RenderFrameHost* render_frame_host,
- const GURL& validated_url,
- int error_code,
- const base::string16& error_description) {
- DidFailLoadInternal(true,
- !render_frame_host->GetParent(),
- error_code,
- error_description,
- validated_url);
-}
-
-void WebContentsObserverAndroid::DidFailLoad(
- RenderFrameHost* render_frame_host,
- const GURL& validated_url,
- int error_code,
- const base::string16& error_description) {
- DidFailLoadInternal(false,
- !render_frame_host->GetParent(),
- error_code,
- error_description,
- validated_url);
-}
-
-void WebContentsObserverAndroid::DidNavigateMainFrame(
- const LoadCommittedDetails& details,
- const FrameNavigateParams& params) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
- if (obj.is_null())
- return;
- ScopedJavaLocalRef<jstring> jstring_url(
- ConvertUTF8ToJavaString(env, params.url.spec()));
- ScopedJavaLocalRef<jstring> jstring_base_url(
- ConvertUTF8ToJavaString(env, params.base_url.spec()));
-
- // See http://crbug.com/251330 for why it's determined this way.
- url::Replacements<char> replacements;
- replacements.ClearRef();
- bool urls_same_ignoring_fragment =
- params.url.ReplaceComponents(replacements) ==
- details.previous_url.ReplaceComponents(replacements);
-
- // is_fragment_navigation is indicative of the intent of this variable.
- // However, there isn't sufficient information here to determine whether this
- // is actually a fragment navigation, or a history API navigation to a URL
- // that would also be valid for a fragment navigation.
- bool is_fragment_navigation = urls_same_ignoring_fragment &&
- (details.type == NAVIGATION_TYPE_IN_PAGE || details.is_in_page);
- Java_WebContentsObserver_didNavigateMainFrame(
- env, obj.obj(), jstring_url.obj(), jstring_base_url.obj(),
- details.is_navigation_to_different_page(), is_fragment_navigation,
- details.http_status_code);
-}
-
-void WebContentsObserverAndroid::DidNavigateAnyFrame(
- RenderFrameHost* render_frame_host,
- const LoadCommittedDetails& details,
- const FrameNavigateParams& params) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
- if (obj.is_null())
- return;
- ScopedJavaLocalRef<jstring> jstring_url(
- ConvertUTF8ToJavaString(env, params.url.spec()));
- ScopedJavaLocalRef<jstring> jstring_base_url(
- ConvertUTF8ToJavaString(env, params.base_url.spec()));
- jboolean jboolean_is_reload = ui::PageTransitionCoreTypeIs(
- params.transition, ui::PAGE_TRANSITION_RELOAD);
-
- Java_WebContentsObserver_didNavigateAnyFrame(
- env, obj.obj(), jstring_url.obj(), jstring_base_url.obj(),
- jboolean_is_reload);
-}
-
-void WebContentsObserverAndroid::DidStartProvisionalLoadForFrame(
- RenderFrameHost* render_frame_host,
- const GURL& validated_url,
- bool is_error_page,
- bool is_iframe_srcdoc) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
- if (obj.is_null())
- return;
- ScopedJavaLocalRef<jstring> jstring_url(
- ConvertUTF8ToJavaString(env, validated_url.spec()));
- // TODO(dcheng): Does Java really need the parent frame ID? It doesn't appear
- // to be used at all, and it just adds complexity here.
- Java_WebContentsObserver_didStartProvisionalLoadForFrame(
- env,
- obj.obj(),
- render_frame_host->GetRoutingID(),
- render_frame_host->GetParent()
- ? render_frame_host->GetParent()->GetRoutingID()
- : -1,
- !render_frame_host->GetParent(),
- jstring_url.obj(),
- is_error_page,
- is_iframe_srcdoc);
-}
-
-void WebContentsObserverAndroid::DidCommitProvisionalLoadForFrame(
- RenderFrameHost* render_frame_host,
- const GURL& url,
- ui::PageTransition transition_type) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
- if (obj.is_null())
- return;
- ScopedJavaLocalRef<jstring> jstring_url(
- ConvertUTF8ToJavaString(env, url.spec()));
- Java_WebContentsObserver_didCommitProvisionalLoadForFrame(
- env,
- obj.obj(),
- render_frame_host->GetRoutingID(),
- !render_frame_host->GetParent(),
- jstring_url.obj(),
- transition_type);
-}
-
-void WebContentsObserverAndroid::DidFinishLoad(
- RenderFrameHost* render_frame_host,
- const GURL& validated_url) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
- if (obj.is_null())
- return;
-
- std::string url_string = validated_url.spec();
- NavigationEntry* entry =
- web_contents()->GetController().GetLastCommittedEntry();
- // Note that GetBaseURLForDataURL is only used by the Android WebView.
- if (entry && !entry->GetBaseURLForDataURL().is_empty())
- url_string = entry->GetBaseURLForDataURL().possibly_invalid_spec();
-
- ScopedJavaLocalRef<jstring> jstring_url(
- ConvertUTF8ToJavaString(env, url_string));
- Java_WebContentsObserver_didFinishLoad(
- env,
- obj.obj(),
- render_frame_host->GetRoutingID(),
- jstring_url.obj(),
- !render_frame_host->GetParent());
-}
-
-void WebContentsObserverAndroid::DocumentLoadedInFrame(
- RenderFrameHost* render_frame_host) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
- if (obj.is_null())
- return;
- Java_WebContentsObserver_documentLoadedInFrame(
- env, obj.obj(), render_frame_host->GetRoutingID());
-}
-
-void WebContentsObserverAndroid::NavigationEntryCommitted(
- const LoadCommittedDetails& load_details) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
- if (obj.is_null())
- return;
- Java_WebContentsObserver_navigationEntryCommitted(env, obj.obj());
-}
-
-void WebContentsObserverAndroid::DidAttachInterstitialPage() {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
- if (obj.is_null())
- return;
- Java_WebContentsObserver_didAttachInterstitialPage(env, obj.obj());
-}
-
-void WebContentsObserverAndroid::DidDetachInterstitialPage() {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
- if (obj.is_null())
- return;
- Java_WebContentsObserver_didDetachInterstitialPage(env, obj.obj());
-}
-
-void WebContentsObserverAndroid::DidChangeThemeColor(SkColor color) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
- if (obj.is_null())
- return;
- Java_WebContentsObserver_didChangeThemeColor(env, obj.obj(), color);
-}
-
-void WebContentsObserverAndroid::DidFailLoadInternal(
- bool is_provisional_load,
- bool is_main_frame,
- int error_code,
- const base::string16& description,
- const GURL& url) {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
- if (obj.is_null())
- return;
- ScopedJavaLocalRef<jstring> jstring_error_description(
- ConvertUTF16ToJavaString(env, description));
- ScopedJavaLocalRef<jstring> jstring_url(
- ConvertUTF8ToJavaString(env, url.spec()));
-
- Java_WebContentsObserver_didFailLoad(
- env, obj.obj(),
- is_provisional_load,
- is_main_frame,
- error_code,
- jstring_error_description.obj(), jstring_url.obj());
-}
-
-void WebContentsObserverAndroid::DidFirstVisuallyNonEmptyPaint() {
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
- if (obj.is_null())
- return;
- Java_WebContentsObserver_didFirstVisuallyNonEmptyPaint(
- env, obj.obj());
-}
-
-bool RegisterWebContentsObserverAndroid(JNIEnv* env) {
- return RegisterNativesImpl(env);
-}
-} // namespace content