static String cachedStorageDirectory(DWORD pathIdentifier) { static HashMap<DWORD, String> directories; HashMap<DWORD, String>::iterator it = directories.find(pathIdentifier); if (it != directories.end()) return it->second; String directory = storageDirectory(pathIdentifier); directories.add(pathIdentifier, directory); return directory; }
WebCache::WebCache(bool isPrivateBrowsing) : m_doomAllEntriesCallback(this, &WebCache::doomAllEntries) , m_onClearDoneCallback(this, &WebCache::onClearDone) , m_isClearInProgress(false) , m_openEntryCallback(this, &WebCache::openEntry) , m_onGetEntryDoneCallback(this, &WebCache::onGetEntryDone) , m_isGetEntryInProgress(false) , m_cacheBackend(0) { base::Thread* ioThread = WebUrlLoaderClient::ioThread(); scoped_refptr<base::MessageLoopProxy> cacheMessageLoopProxy = ioThread->message_loop_proxy(); static const int kMaximumCacheSizeBytes = 20 * 1024 * 1024; m_hostResolver = net::CreateSystemHostResolver(net::HostResolver::kDefaultParallelism, 0, 0,ioThread->message_loop()); if (!isPrivateBrowsing) { m_hostPreresolver = CreateResolverIPObserver(m_hostResolver.get()); } m_proxyConfigService = new ProxyConfigServiceAndroid(); net::HttpCache::BackendFactory* backendFactory; if (isPrivateBrowsing) backendFactory = net::HttpCache::DefaultBackend::InMemory(kMaximumCacheSizeBytes / 2); else { string storage(storageDirectory()); if (storage.empty()) // Can't get a storage directory from the OS backendFactory = net::HttpCache::DefaultBackend::InMemory(kMaximumCacheSizeBytes / 2); else { FilePath directoryPath(storage.c_str()); backendFactory = new net::HttpCache::DefaultBackend(net::DISK_CACHE, directoryPath, kMaximumCacheSizeBytes, cacheMessageLoopProxy); } } m_cache = new net::HttpCache(m_hostResolver.get(), new CertVerifier(), 0, // dnsrr_resolver 0, // dns_cert_checker net::ProxyService::CreateWithoutProxyResolver(m_proxyConfigService, 0 /* net_log */), net::SSLConfigService::CreateSystemSSLConfigService(), net::HttpAuthHandlerFactory::CreateDefault(m_hostResolver.get()), 0, // network_delegate 0, // net_log backendFactory); }
String WebContext::platformDefaultLocalStorageDirectory() const { GOwnPtr<gchar> storageDirectory(g_build_filename(g_get_user_data_dir(), "webkitgtk", "localstorage", NULL)); return WebCore::filenameToString(storageDirectory.get()); }