1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5package org.chromium.android_webview;
6
7import android.content.Context;
8import android.content.SharedPreferences;
9
10import org.chromium.content.browser.ContentViewStatics;
11import org.chromium.net.DefaultAndroidKeyStore;
12
13/**
14 * Java side of the Browser Context: contains all the java side objects needed to host one
15 * browing session (i.e. profile).
16 * Note that due to running in single process mode, and limitations on renderer process only
17 * being able to use a single browser context, currently there can only be one AwBrowserContext
18 * instance, so at this point the class mostly exists for conceptual clarity.
19 */
20public class AwBrowserContext {
21
22    private static final String HTTP_AUTH_DATABASE_FILE = "http_auth.db";
23
24    private SharedPreferences mSharedPreferences;
25
26    private AwGeolocationPermissions mGeolocationPermissions;
27    private AwCookieManager mCookieManager;
28    private AwFormDatabase mFormDatabase;
29    private HttpAuthDatabase mHttpAuthDatabase;
30    private DefaultAndroidKeyStore mLocalKeyStore;
31
32    public AwBrowserContext(SharedPreferences sharedPreferences) {
33        mSharedPreferences = sharedPreferences;
34    }
35
36    public AwGeolocationPermissions getGeolocationPermissions() {
37        if (mGeolocationPermissions == null) {
38            mGeolocationPermissions = new AwGeolocationPermissions(mSharedPreferences);
39        }
40        return mGeolocationPermissions;
41    }
42
43    public AwCookieManager getCookieManager() {
44        if (mCookieManager == null) {
45            mCookieManager = new AwCookieManager();
46        }
47        return mCookieManager;
48    }
49
50    public AwFormDatabase getFormDatabase() {
51        if (mFormDatabase == null) {
52            mFormDatabase = new AwFormDatabase();
53        }
54        return mFormDatabase;
55    }
56
57    public HttpAuthDatabase getHttpAuthDatabase(Context context) {
58        if (mHttpAuthDatabase == null) {
59            mHttpAuthDatabase = HttpAuthDatabase.newInstance(context, HTTP_AUTH_DATABASE_FILE);
60        }
61        return mHttpAuthDatabase;
62    }
63
64    public DefaultAndroidKeyStore getKeyStore() {
65        if (mLocalKeyStore == null) {
66            mLocalKeyStore = new DefaultAndroidKeyStore();
67        }
68        return mLocalKeyStore;
69    }
70
71    /**
72     * @see android.webkit.WebView#pauseTimers()
73     */
74    public void pauseTimers() {
75        ContentViewStatics.setWebKitSharedTimersSuspended(true);
76    }
77
78    /**
79     * @see android.webkit.WebView#resumeTimers()
80     */
81    public void resumeTimers() {
82        ContentViewStatics.setWebKitSharedTimersSuspended(false);
83    }
84}
85