/* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.webkit; import android.content.Context; import android.util.Log; import android.webkit.CookieManager.Cookie; import java.util.ArrayList; import java.util.Iterator; /** * The class CookieSyncManager is used to synchronize the browser cookies * between RAM and FLASH. To get the best performance, browser cookie is saved * in RAM. We use a separate thread to sync the cookies between RAM and FLASH on * a timer base. *
* To use the CookieSyncManager, the host application has to call the following * when the application starts. *
* CookieSyncManager.createInstance(context) *
* To set up for sync, the host application has to call *
* CookieSyncManager.getInstance().startSync() *
* in its Activity.onResume(), and call *
* CookieSyncManager.getInstance().stopSync() *
* in its Activity.onStop(). *
* To get instant sync instead of waiting for the timer to trigger, the host can * call *
* CookieSyncManager.getInstance().sync()
*/
public final class CookieSyncManager extends WebSyncManager {
private static CookieSyncManager sRef;
// time when last update happened
private long mLastUpdate;
private CookieSyncManager(Context context) {
super(context, "CookieSyncManager");
}
/**
* Singleton access to a {@link CookieSyncManager}. An
* IllegalStateException will be thrown if
* {@link CookieSyncManager#createInstance(Context)} is not called before.
*
* @return CookieSyncManager
*/
public static synchronized CookieSyncManager getInstance() {
if (sRef == null) {
throw new IllegalStateException(
"CookieSyncManager::createInstance() needs to be called "
+ "before CookieSyncManager::getInstance()");
}
return sRef;
}
/**
* Create a singleton CookieSyncManager within a context
* @param context
* @return CookieSyncManager
*/
public static synchronized CookieSyncManager createInstance(
Context context) {
if (sRef == null) {
sRef = new CookieSyncManager(context);
}
return sRef;
}
/**
* Package level api, called from CookieManager Get all the cookies which
* matches a given base domain.
* @param domain
* @return A list of Cookie
*/
ArrayList