// Copyright 2013 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.chrome.browser.prerender;
import org.chromium.base.JNINamespace;
import org.chromium.chrome.browser.ContentViewUtil;
import org.chromium.chrome.browser.profiles.Profile;
/**
* A handler class for prerender requests coming from other applications.
*/
@JNINamespace("prerender")
public class ExternalPrerenderHandler {
private int mNativeExternalPrerenderHandler;
public ExternalPrerenderHandler() {
mNativeExternalPrerenderHandler = nativeInit();
}
public int addPrerender(Profile profile, String url, String referrer, int width, int height) {
int webContentsPtr = ContentViewUtil.createNativeWebContents(false);
if (nativeAddPrerender(mNativeExternalPrerenderHandler, profile, webContentsPtr,
url, referrer, width, height)) {
return webContentsPtr;
}
ContentViewUtil.destroyNativeWebContents(webContentsPtr);
return 0;
}
public void cancelCurrentPrerender() {
nativeCancelCurrentPrerender(mNativeExternalPrerenderHandler);
}
public static boolean hasPrerenderedUrl(Profile profile, String url, int webContentsPtr) {
return nativeHasPrerenderedUrl(profile, url, webContentsPtr);
}
private static native int nativeInit();
private static native boolean nativeAddPrerender(
int nativeExternalPrerenderHandlerAndroid, Profile profile,
int webContentsPtr, String url, String referrer, int width, int height);
private static native boolean nativeHasPrerenderedUrl(
Profile profile, String url, int webContentsPtr);
private static native void nativeCancelCurrentPrerender(
int nativeExternalPrerenderHandlerAndroid);
}