// Copyright 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. package org.chromium.content.browser; import org.chromium.base.CalledByNative; import org.chromium.base.JNINamespace; /** * This class receives callbacks that act as hooks for various a native web contents events related * to loading a url. A single web contents can have multiple WebContentObserverAndroids. */ @JNINamespace("content") public abstract class WebContentsObserverAndroid { private long mNativeWebContentsObserverAndroid; public WebContentsObserverAndroid(ContentViewCore contentViewCore) { mNativeWebContentsObserverAndroid = nativeInit(contentViewCore.getNativeContentViewCore()); } @CalledByNative public void renderProcessGone(boolean wasOomProtected) { } /** * Called when the a page starts loading. * @param url The validated url for the loading page. */ @CalledByNative public void didStartLoading(String url) { } /** * Called when the a page finishes loading. * @param url The validated url for the page. */ @CalledByNative public void didStopLoading(String url) { } /** * Called when an error occurs while loading a page and/or the page fails to load. * @param errorCode Error code for the occurring error. * @param description The description for the error. * @param failingUrl The url that was loading when the error occurred. */ @CalledByNative public void didFailLoad(boolean isProvisionalLoad, boolean isMainFrame, int errorCode, String description, String failingUrl) { } // TODO(mkosiba): delete once downstream rolls. @Deprecated @CalledByNative public void didNavigateMainFrame(String url, String baseUrl, boolean isNavigationToDifferentPage) { } /** * Called when the main frame of the page has committed. * @param url The validated url for the page. * @param baseUrl The validated base url for the page. * @param isNavigationToDifferentPage Whether the main frame navigated to a different page. * @param isNavigationInPage Whether the main frame navigation did not cause changes to the * document (for example scrolling to a named anchor or PopState). */ @CalledByNative public void didNavigateMainFrame(String url, String baseUrl, boolean isNavigationToDifferentPage, boolean isNavigationInPage) { } /** * Called when the page had painted something non-empty. * @param pageId unique ID of the page in history entries. */ @CalledByNative public void didFirstVisuallyNonEmptyPaint(int pageId) { } /** * Similar to didNavigateMainFrame but also called on subframe navigations. * @param url The validated url for the page. * @param baseUrl The validated base url for the page. * @param isReload True if this navigation is a reload. */ @CalledByNative public void didNavigateAnyFrame(String url, String baseUrl, boolean isReload) { } /** * Notifies that a load is started for a given frame. * @param frameId A positive, non-zero integer identifying the navigating frame. * @param parentFrameId The frame identifier of the frame containing the navigating frame, * or -1 if the frame is not contained in another frame. * @param isMainFrame Whether the load is happening for the main frame. * @param validatedUrl The validated URL that is being navigated to. * @param isErrorPage Whether this is navigating to an error page. * @param isIframeSrcdoc Whether this is navigating to about:srcdoc. */ @CalledByNative public void didStartProvisionalLoadForFrame( long frameId, long parentFrameId, boolean isMainFrame, String validatedUrl, boolean isErrorPage, boolean isIframeSrcdoc) { } /** * Notifies that the provisional load was successfully committed. The RenderViewHost is now * the current RenderViewHost of the WebContents. * @param frameId A positive, non-zero integer identifying the navigating frame. * @param isMainFrame Whether the load is happening for the main frame. * @param url The committed URL being navigated to. * @param transitionType The transition type as defined in * {@link org.chromium.content.browser.PageTransitionTypes} for the load. */ @CalledByNative public void didCommitProvisionalLoadForFrame( long frameId, boolean isMainFrame, String url, int transitionType) { } /** * Notifies that a load has finished for a given frame. * @param frameId A positive, non-zero integer identifying the navigating frame. * @param validatedUrl The validated URL that is being navigated to. * @param isMainFrame Whether the load is happening for the main frame. */ @CalledByNative public void didFinishLoad(long frameId, String validatedUrl, boolean isMainFrame) { } /** * Notifies that a navigation entry has been committed. */ @CalledByNative public void navigationEntryCommitted() { } /** * Invoked when visible SSL state changes. */ @CalledByNative public void didChangeVisibleSSLState() { } /** * Called when an interstitial page gets attached to the tab content. */ @CalledByNative public void didAttachInterstitialPage() { } /** * Called when an interstitial page gets detached from the tab content. */ @CalledByNative public void didDetachInterstitialPage() { } /** * Destroy the corresponding native object. */ @CalledByNative public void detachFromWebContents() { if (mNativeWebContentsObserverAndroid != 0) { nativeDestroy(mNativeWebContentsObserverAndroid); mNativeWebContentsObserverAndroid = 0; } } private native long nativeInit(long contentViewCorePtr); private native void nativeDestroy(long nativeWebContentsObserverAndroid); }