WebContentsObserverAndroid.java revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
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 5package org.chromium.content.browser; 6 7import org.chromium.base.CalledByNative; 8import org.chromium.base.JNINamespace; 9 10/** 11 * This class receives callbacks that act as hooks for various a native web contents events related 12 * to loading a url. A single web contents can have multiple WebContentObserverAndroids. 13 */ 14@JNINamespace("content") 15public abstract class WebContentsObserverAndroid { 16 private int mNativeWebContentsObserverAndroid; 17 18 public WebContentsObserverAndroid(ContentViewCore contentViewCore) { 19 mNativeWebContentsObserverAndroid = nativeInit(contentViewCore.getNativeContentViewCore()); 20 } 21 22 /** 23 * Called when the a page starts loading. 24 * @param url The validated url for the loading page. 25 */ 26 @CalledByNative 27 public void didStartLoading(String url) { 28 } 29 30 /** 31 * Called when the a page finishes loading. 32 * @param url The validated url for the page. 33 */ 34 @CalledByNative 35 public void didStopLoading(String url) { 36 } 37 38 /** 39 * Called when an error occurs while loading a page and/or the page fails to load. 40 * @param errorCode Error code for the occurring error. 41 * @param description The description for the error. 42 * @param failingUrl The url that was loading when the error occurred. 43 */ 44 @CalledByNative 45 public void didFailLoad(boolean isProvisionalLoad, 46 boolean isMainFrame, int errorCode, String description, String failingUrl) { 47 } 48 49 /** 50 * Called when the main frame of the page has committed. 51 * @param url The validated url for the page. 52 * @param baseUrl The validated base url for the page. 53 * @param isNavigationToDifferentPage Whether the main frame navigated to a different page. 54 */ 55 @CalledByNative 56 public void didNavigateMainFrame(String url, String baseUrl, 57 boolean isNavigationToDifferentPage) { 58 } 59 60 /** 61 * Similar to didNavigateMainFrame but also called on subframe navigations. 62 * @param url The validated url for the page. 63 * @param baseUrl The validated base url for the page. 64 * @param isReload True if this navigation is a reload. 65 */ 66 @CalledByNative 67 public void didNavigateAnyFrame(String url, String baseUrl, boolean isReload) { 68 } 69 70 /** 71 * Notifies that a load is started for a given frame. 72 * @param frameId A positive, non-zero integer identifying the navigating frame. 73 * @param parentFrameId The frame identifier of the frame containing the navigating frame, 74 * or -1 if the frame is not contained in another frame. 75 * @param isMainFrame Whether the load is happening for the main frame. 76 * @param validatedUrl The validated URL that is being navigated to. 77 * @param isErrorPage Whether this is navigating to an error page. 78 * @param isIframeSrcdoc Whether this is navigating to about:srcdoc. 79 */ 80 @CalledByNative 81 public void didStartProvisionalLoadForFrame( 82 long frameId, 83 long parentFrameId, 84 boolean isMainFrame, 85 String validatedUrl, 86 boolean isErrorPage, 87 boolean isIframeSrcdoc) { 88 } 89 90 /** 91 * Notifies that the provisional load was successfully committed. The RenderViewHost is now 92 * the current RenderViewHost of the WebContents. 93 * @param frameId A positive, non-zero integer identifying the navigating frame. 94 * @param isMainFrame Whether the load is happening for the main frame. 95 * @param url The committed URL being navigated to. 96 * @param transitionType The transition type as defined in 97 * {@link org.chromium.content.browser.PageTransitionTypes} for the load. 98 */ 99 @CalledByNative 100 public void didCommitProvisionalLoadForFrame( 101 long frameId, boolean isMainFrame, String url, int transitionType) { 102 103 } 104 105 /** 106 * Notifies that a load has finished for a given frame. 107 * @param frameId A positive, non-zero integer identifying the navigating frame. 108 * @param validatedUrl The validated URL that is being navigated to. 109 * @param isMainFrame Whether the load is happening for the main frame. 110 */ 111 @CalledByNative 112 public void didFinishLoad(long frameId, String validatedUrl, boolean isMainFrame) { 113 } 114 115 /** 116 * Notifies that a navigation entry has been committed. 117 */ 118 @CalledByNative 119 public void navigationEntryCommitted() { 120 } 121 122 /** 123 * Invoked when visible SSL state changes. 124 */ 125 @CalledByNative 126 public void didChangeVisibleSSLState() { 127 } 128 129 /** 130 * Called when an interstitial page gets attached to the tab content. 131 */ 132 @CalledByNative 133 public void didAttachInterstitialPage() { 134 } 135 136 /** 137 * Called when an interstitial page gets detached from the tab content. 138 */ 139 @CalledByNative 140 public void didDetachInterstitialPage() { 141 } 142 143 /** 144 * Destroy the corresponding native object. 145 */ 146 @CalledByNative 147 public void detachFromWebContents() { 148 if (mNativeWebContentsObserverAndroid != 0) { 149 nativeDestroy(mNativeWebContentsObserverAndroid); 150 mNativeWebContentsObserverAndroid = 0; 151 } 152 } 153 154 private native int nativeInit(int contentViewCorePtr); 155 private native void nativeDestroy(int nativeWebContentsObserverAndroid); 156} 157