summaryrefslogtreecommitdiffstats
path: root/chrome/android
diff options
context:
space:
mode:
authortburkard@chromium.org <tburkard@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-13 08:19:59 +0000
committertburkard@chromium.org <tburkard@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-13 08:19:59 +0000
commit28c5d0b7a83b11685698c5cd2ffb04c91d75a0c6 (patch)
tree949ca1fb18b48a01675ce6f62ecb0943a15bb292 /chrome/android
parentf73e1ca075924a6ca1125d5d7f96e374532852c3 (diff)
downloadchromium_src-28c5d0b7a83b11685698c5cd2ffb04c91d75a0c6.zip
chromium_src-28c5d0b7a83b11685698c5cd2ffb04c91d75a0c6.tar.gz
chromium_src-28c5d0b7a83b11685698c5cd2ffb04c91d75a0c6.tar.bz2
Only commit cookie changes in prerenders after a prerender is shown
Will create a PrerenderCookieStore for each prerender, retaining all cookie operations of a prerender until the prerender is shown to the user. Forces prerenders to be in a new render process by themselves for this to work. This is a resubmission of https://codereview.chromium.org/233353003, which had to be reverted due to build breaks. See LGTM's there. BUG=371003 TBR=jam@chromium.org Review URL: https://codereview.chromium.org/280403002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@270049 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/android')
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/prerender/ExternalPrerenderHandler.java6
-rw-r--r--chrome/android/javatests/src/org/chromium/chrome/browser/prerender/ExternalPrerenderRequestTest.java8
2 files changed, 13 insertions, 1 deletions
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/prerender/ExternalPrerenderHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/prerender/ExternalPrerenderHandler.java
index 3783554..b96062e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/prerender/ExternalPrerenderHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/prerender/ExternalPrerenderHandler.java
@@ -38,12 +38,18 @@ public class ExternalPrerenderHandler {
return nativeHasPrerenderedUrl(profile, url, webContentsPtr);
}
+ public static boolean hasCookieStoreLoaded(Profile profile) {
+ return nativeHasCookieStoreLoaded(profile);
+ }
+
private static native long nativeInit();
private static native boolean nativeAddPrerender(
long nativeExternalPrerenderHandlerAndroid, Profile profile,
long webContentsPtr, String url, String referrer, int width, int height);
private static native boolean nativeHasPrerenderedUrl(
Profile profile, String url, long webContentsPtr);
+ private static native boolean nativeHasCookieStoreLoaded(
+ Profile profile);
private static native void nativeCancelCurrentPrerender(
long nativeExternalPrerenderHandlerAndroid);
}
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/prerender/ExternalPrerenderRequestTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/prerender/ExternalPrerenderRequestTest.java
index dcbb9fc..4ef0054 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/prerender/ExternalPrerenderRequestTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/prerender/ExternalPrerenderRequestTest.java
@@ -21,11 +21,14 @@ import java.util.concurrent.Callable;
* Tests for adding and removing prerenders using the {@link ExternalPrerenderHandler}
*/
public class ExternalPrerenderRequestTest extends ChromeShellTestBase {
+ private static final String HOMEPAGE_URL =
+ TestHttpServerClient.getUrl("chrome/test/data/android/prerender/homepage.html");
private static final String GOOGLE_URL =
TestHttpServerClient.getUrl("chrome/test/data/android/prerender/google.html");
private static final String YOUTUBE_URL =
TestHttpServerClient.getUrl("chrome/test/data/android/prerender/youtube.html");
private static final int PRERENDER_DELAY_MS = 500;
+ private static final int CHECK_COOKIE_STORE_FREQUENCY_MS = 200;
private ExternalPrerenderHandler mHandler;
private Profile mProfile;
@@ -34,7 +37,8 @@ public class ExternalPrerenderRequestTest extends ChromeShellTestBase {
public void setUp() throws Exception {
super.setUp();
clearAppData();
- launchChromeShellWithBlankPage();
+ // Launch with a non-blank homepage, to trigger cookie store loading.
+ launchChromeShellWithUrl(HOMEPAGE_URL);
assertTrue(waitForActiveShellToBeDoneLoading());
mHandler = new ExternalPrerenderHandler();
final Callable<Profile> profileCallable = new Callable<Profile>() {
@@ -44,6 +48,8 @@ public class ExternalPrerenderRequestTest extends ChromeShellTestBase {
}
};
mProfile = ThreadUtils.runOnUiThreadBlocking(profileCallable);
+ while (!ExternalPrerenderHandler.hasCookieStoreLoaded(mProfile))
+ Thread.sleep(CHECK_COOKIE_STORE_FREQUENCY_MS);
}
@MediumTest