| Index: chrome/browser/appcache/chrome_appcache_service.cc
|
| ===================================================================
|
| --- chrome/browser/appcache/chrome_appcache_service.cc (revision 75978)
|
| +++ chrome/browser/appcache/chrome_appcache_service.cc (working copy)
|
| @@ -1,147 +0,0 @@
|
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/appcache/chrome_appcache_service.h"
|
| -
|
| -#include "base/file_path.h"
|
| -#include "base/file_util.h"
|
| -#include "chrome/browser/browser_list.h"
|
| -#include "chrome/browser/net/chrome_url_request_context.h"
|
| -#include "chrome/common/chrome_constants.h"
|
| -#include "chrome/common/notification_service.h"
|
| -#include "net/base/net_errors.h"
|
| -#include "webkit/appcache/appcache_thread.h"
|
| -
|
| -static bool has_initialized_thread_ids;
|
| -
|
| -namespace {
|
| -
|
| -// Used to defer deleting of local storage until the destructor has finished.
|
| -void DeleteLocalStateOnIOThread(FilePath cache_path) {
|
| - // Post the actual deletion to the DB thread to ensure it happens after the
|
| - // database file has been closed.
|
| - BrowserThread::PostTask(
|
| - BrowserThread::DB, FROM_HERE,
|
| - NewRunnableFunction<bool(*)(const FilePath&, bool), FilePath, bool>(
|
| - &file_util::Delete, cache_path, true));
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -// ----------------------------------------------------------------------------
|
| -
|
| -ChromeAppCacheService::ChromeAppCacheService()
|
| - : clear_local_state_on_exit_(false) {
|
| -}
|
| -
|
| -void ChromeAppCacheService::InitializeOnIOThread(
|
| - const FilePath& profile_path, bool is_incognito,
|
| - scoped_refptr<HostContentSettingsMap> content_settings_map,
|
| - bool clear_local_state_on_exit) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| -
|
| - if (!has_initialized_thread_ids) {
|
| - has_initialized_thread_ids = true;
|
| - appcache::AppCacheThread::Init(BrowserThread::DB, BrowserThread::IO);
|
| - }
|
| -
|
| - host_contents_settings_map_ = content_settings_map;
|
| - registrar_.Add(
|
| - this, NotificationType::PURGE_MEMORY, NotificationService::AllSources());
|
| - SetClearLocalStateOnExit(clear_local_state_on_exit);
|
| - if (!is_incognito)
|
| - cache_path_ = profile_path.Append(chrome::kAppCacheDirname);
|
| -
|
| - // Init our base class.
|
| - Initialize(cache_path_,
|
| - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::CACHE));
|
| - set_appcache_policy(this);
|
| -}
|
| -
|
| -ChromeAppCacheService::~ChromeAppCacheService() {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| -
|
| - if (clear_local_state_on_exit_ && !cache_path_.empty()) {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::IO, FROM_HERE,
|
| - NewRunnableFunction(DeleteLocalStateOnIOThread, cache_path_));
|
| - }
|
| -}
|
| -
|
| -void ChromeAppCacheService::SetOriginQuotaInMemory(
|
| - const GURL& origin, int64 quota) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| - if (storage())
|
| - storage()->SetOriginQuotaInMemory(origin, quota);
|
| -}
|
| -
|
| -void ChromeAppCacheService::ResetOriginQuotaInMemory(const GURL& origin) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| - if (storage())
|
| - storage()->ResetOriginQuotaInMemory(origin);
|
| -}
|
| -
|
| -void ChromeAppCacheService::SetClearLocalStateOnExit(bool clear_local_state) {
|
| - if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::IO, FROM_HERE,
|
| - NewRunnableMethod(this,
|
| - &ChromeAppCacheService::SetClearLocalStateOnExit,
|
| - clear_local_state));
|
| - return;
|
| - }
|
| - clear_local_state_on_exit_ = clear_local_state;
|
| -}
|
| -
|
| -bool ChromeAppCacheService::CanLoadAppCache(const GURL& manifest_url) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| - ContentSetting setting = host_contents_settings_map_->GetContentSetting(
|
| - manifest_url, CONTENT_SETTINGS_TYPE_COOKIES, "");
|
| - DCHECK(setting != CONTENT_SETTING_DEFAULT);
|
| - // We don't prompt for read access.
|
| - return setting != CONTENT_SETTING_BLOCK;
|
| -}
|
| -
|
| -int ChromeAppCacheService::CanCreateAppCache(
|
| - const GURL& manifest_url, net::CompletionCallback* callback) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| - ContentSetting setting = host_contents_settings_map_->GetContentSetting(
|
| - manifest_url, CONTENT_SETTINGS_TYPE_COOKIES, "");
|
| - DCHECK(setting != CONTENT_SETTING_DEFAULT);
|
| - return (setting != CONTENT_SETTING_BLOCK) ? net::OK :
|
| - net::ERR_ACCESS_DENIED;
|
| -}
|
| -
|
| -void ChromeAppCacheService::Observe(NotificationType type,
|
| - const NotificationSource& source,
|
| - const NotificationDetails& details) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| - DCHECK(type == NotificationType::PURGE_MEMORY);
|
| - PurgeMemory();
|
| -}
|
| -
|
| -// ----------------------------------------------------------------------------
|
| -
|
| -static BrowserThread::ID ToBrowserThreadID(int id) {
|
| - DCHECK(has_initialized_thread_ids);
|
| - DCHECK(id == BrowserThread::DB || id == BrowserThread::IO);
|
| - return static_cast<BrowserThread::ID>(id);
|
| -}
|
| -
|
| -namespace appcache {
|
| -
|
| -// An impl of AppCacheThread we need to provide to the appcache lib.
|
| -
|
| -bool AppCacheThread::PostTask(
|
| - int id,
|
| - const tracked_objects::Location& from_here,
|
| - Task* task) {
|
| - return BrowserThread::PostTask(ToBrowserThreadID(id), from_here, task);
|
| -}
|
| -
|
| -bool AppCacheThread::CurrentlyOn(int id) {
|
| - return BrowserThread::CurrentlyOn(ToBrowserThreadID(id));
|
| -}
|
| -
|
| -} // namespace appcache
|
|
|