| Index: chrome/android/java/src/org/chromium/chrome/browser/cookies/CookiesFetcher.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/cookies/CookiesFetcher.java b/chrome/android/java/src/org/chromium/chrome/browser/cookies/CookiesFetcher.java
|
| index c5c42bf94afc5739a956e1a1b7466b1275832121..0cfafdb92009a3fcf0e64e60c553e08c8173583e 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/cookies/CookiesFetcher.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/cookies/CookiesFetcher.java
|
| @@ -18,7 +18,6 @@ import org.chromium.content.common.CleanupReference;
|
| import java.io.ByteArrayOutputStream;
|
| import java.io.DataInputStream;
|
| import java.io.DataOutputStream;
|
| -import java.io.EOFException;
|
| import java.io.File;
|
| import java.io.FileInputStream;
|
| import java.io.IOException;
|
| @@ -40,13 +39,6 @@ public class CookiesFetcher {
|
| /** Used for logging. */
|
| private static final String TAG = "CookiesFetcher";
|
|
|
| - /**
|
| - * Used to confirm that the current cipher key matches the previously used cipher key when
|
| - * restoring data. If this value cannot be read from the file, the file is likely garbage.
|
| - * TODO(acleung): May be use real cryptographic integrity checks on the whole file, instead.
|
| - */
|
| - private static final String MAGIC_STRING = "c0Ok135";
|
| -
|
| /** Native-side pointer. */
|
| private final long mNativeCookiesFetcher;
|
|
|
| @@ -119,7 +111,7 @@ public class CookiesFetcher {
|
| @Override
|
| protected List<CanonicalCookie> doInBackground(Void... voids) {
|
| // Read cookies from disk on a background thread to avoid strict mode violations.
|
| - ArrayList<CanonicalCookie> cookies = new ArrayList<CanonicalCookie>();
|
| + List<CanonicalCookie> cookies = new ArrayList<CanonicalCookie>();
|
| DataInputStream in = null;
|
| try {
|
| Cipher cipher = CipherFactory.getInstance().getCipher(Cipher.DECRYPT_MODE);
|
| @@ -132,27 +124,14 @@ public class CookiesFetcher {
|
|
|
| FileInputStream streamIn = new FileInputStream(fileIn);
|
| in = new DataInputStream(new CipherInputStream(streamIn, cipher));
|
| - String check = in.readUTF();
|
| - if (!MAGIC_STRING.equals(check)) {
|
| - // Stale cookie file. Chrome might have crashed before it
|
| - // can delete the old file.
|
| - return cookies;
|
| - }
|
| - try {
|
| - while (true) {
|
| - CanonicalCookie cookie = CanonicalCookie.createFromStream(in);
|
| - cookies.add(cookie);
|
| - }
|
| - } catch (EOFException ignored) {
|
| - // We are done.
|
| - }
|
| + cookies = CanonicalCookie.readListFromStream(in);
|
|
|
| // The Cookie File should not be restored again. It'll be overwritten
|
| // on the next onPause.
|
| scheduleDeleteCookiesFile(context);
|
|
|
| } catch (IOException e) {
|
| - Log.w(TAG, "IOException during Cookie Restore");
|
| + Log.w(TAG, "IOException during Cookie Restore", e);
|
| } catch (Throwable t) {
|
| Log.w(TAG, "Error restoring cookies.", t);
|
| } finally {
|
| @@ -174,7 +153,7 @@ public class CookiesFetcher {
|
| nativeRestoreCookies(cookie.getUrl(), cookie.getName(), cookie.getValue(),
|
| cookie.getDomain(), cookie.getPath(), cookie.getCreationDate(),
|
| cookie.getExpirationDate(), cookie.getLastAccessDate(),
|
| - cookie.isSecure(), cookie.isHttpOnly(), cookie.isSameSite(),
|
| + cookie.isSecure(), cookie.isHttpOnly(), cookie.getSameSite(),
|
| cookie.getPriority());
|
| }
|
| }
|
| @@ -219,7 +198,7 @@ public class CookiesFetcher {
|
| @CalledByNative
|
| private CanonicalCookie createCookie(String url, String name, String value, String domain,
|
| String path, long creation, long expiration, long lastAccess, boolean secure,
|
| - boolean httpOnly, boolean sameSite, int priority) {
|
| + boolean httpOnly, int sameSite, int priority) {
|
| return new CanonicalCookie(url, name, value, domain, path, creation, expiration, lastAccess,
|
| secure, httpOnly, sameSite, priority);
|
| }
|
| @@ -251,11 +230,7 @@ public class CookiesFetcher {
|
| CipherOutputStream cipherOut =
|
| new CipherOutputStream(byteOut, cipher);
|
| out = new DataOutputStream(cipherOut);
|
| -
|
| - out.writeUTF(MAGIC_STRING);
|
| - for (CanonicalCookie cookie : cookies) {
|
| - cookie.saveToStream(out);
|
| - }
|
| + CanonicalCookie.saveListToStream(out, cookies);
|
| out.close();
|
| ImportantFileWriterAndroid.writeFileAtomically(
|
| fetchFileName(mContext), byteOut.toByteArray());
|
| @@ -296,5 +271,5 @@ public class CookiesFetcher {
|
| private native void nativePersistCookies(long nativeCookiesFetcher);
|
| private static native void nativeRestoreCookies(String url, String name, String value,
|
| String domain, String path, long creation, long expiration, long lastAccess,
|
| - boolean secure, boolean httpOnly, boolean sameSite, int priority);
|
| + boolean secure, boolean httpOnly, int sameSite, int priority);
|
| }
|
|
|