diff options
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/force_tls_persister.cc | 72 | ||||
-rw-r--r-- | chrome/browser/force_tls_persister.h | 64 | ||||
-rw-r--r-- | chrome/browser/profile.cc | 12 | ||||
-rw-r--r-- | chrome/browser/profile.h | 6 |
4 files changed, 6 insertions, 148 deletions
diff --git a/chrome/browser/force_tls_persister.cc b/chrome/browser/force_tls_persister.cc deleted file mode 100644 index a07f523..0000000 --- a/chrome/browser/force_tls_persister.cc +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright (c) 2006-2008 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/force_tls_persister.h" - -#include "base/file_path.h" -#include "base/file_util.h" -#include "base/message_loop.h" -#include "base/path_service.h" -#include "base/thread.h" -#include "chrome/common/chrome_paths.h" -#include "net/base/force_tls_state.h" - -ForceTLSPersister::ForceTLSPersister(net::ForceTLSState* state, - base::Thread* file_thread) - : state_is_dirty_(false), - force_tls_state_(state), - file_thread_(file_thread) { - state->SetDelegate(this); - - Task* task = NewRunnableMethod(this, &ForceTLSPersister::LoadState); - file_thread->message_loop()->PostDelayedTask(FROM_HERE, task, - 1000 /* 1 second */); -} - -static FilePath GetStateFile() { - FilePath user_data_dir; - PathService::Get(chrome::DIR_USER_DATA, &user_data_dir); - return user_data_dir.Append("ForceTLSState"); -} - -void ForceTLSPersister::LoadState() { - // Runs on |file_thread_| - AutoLock locked_(lock_); - DCHECK(file_thread_->message_loop() == MessageLoop::current()); - - std::string state; - if (!file_util::ReadFileToString(GetStateFile(), &state)) - return; - - force_tls_state_->Deserialise(state); -} - -void ForceTLSPersister::StateIsDirty(net::ForceTLSState* state) { - // Runs on arbitary thread, may not block nor reenter |force_tls_state_| - AutoLock locked_(lock_); - DCHECK(state == force_tls_state_); - - if (state_is_dirty_) - return; // we already have a serialisation scheduled - - Task* task = NewRunnableMethod(this, &ForceTLSPersister::SerialiseState); - file_thread_->message_loop()->PostDelayedTask(FROM_HERE, task, - 1000 /* 1 second */); - state_is_dirty_ = true; -} - -void ForceTLSPersister::SerialiseState() { - // Runs on |file_thread_| - AutoLock locked_(lock_); - DCHECK(file_thread_->message_loop() == MessageLoop::current()); - - DCHECK(state_is_dirty_); - state_is_dirty_ = false; - - std::string state; - if (!force_tls_state_->Serialise(&state)) - return; - - file_util::WriteFile(GetStateFile(), state.data(), state.size()); -} diff --git a/chrome/browser/force_tls_persister.h b/chrome/browser/force_tls_persister.h deleted file mode 100644 index be4c17d..0000000 --- a/chrome/browser/force_tls_persister.h +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) 2006-2008 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. - -// ForceTLSState maintains an in memory database containing the list of hosts -// that currently have ForceTLS enabled. This singleton object deals with -// writing that data out to disk as needed and loading it at startup. - -// At startup we need to load the ForceTLS state from the disk. For the moment, -// we don't want to delay startup for this load, so we let the ForceTLSState -// run for a while without being loaded. This means that it's possible for -// pages opened very quickly not to get the correct ForceTLS information. -// -// To load the state, we schedule a Task on the file thread which loads, -// deserialises and configures the ForceTLSState. -// -// The ForceTLSState object supports running a callback function when it -// changes. This object registers the callback, pointing at itself. -// -// ForceTLSState calls... -// ForceTLSPersister::StateIsDirty -// since the callback isn't allowed to block or reenter, we schedule a Task -// on |file_thread_| after some small amount of time -// -// ... -// -// ForceTLSPersister::SerialiseState -// copies the current state of the ForceTLSState, serialises and writes to -// disk. - -#include "base/lock.h" -#include "base/ref_counted.h" -#include "net/base/force_tls_state.h" - -namespace base { -class Thread; -} - -class ForceTLSPersister : public base::RefCountedThreadSafe<ForceTLSPersister>, - public net::ForceTLSState::Delegate { - public: - ForceTLSPersister(net::ForceTLSState* state, base::Thread* file_thread); - - // Called by the ForceTLSState when it changes its state. - virtual void StateIsDirty(net::ForceTLSState*); - - private: - // a Task callback for when the state needs to be written out. - void SerialiseState(); - - // a Task callback for when the state needs to be loaded from disk at startup. - void LoadState(); - - Lock lock_; // protects all the members - - // true when the state object has signaled that we're dirty and we haven't - // serialised the state yet. - bool state_is_dirty_; - - scoped_refptr<net::ForceTLSState> force_tls_state_; - - // This is a thread which can perform file access. - base::Thread* const file_thread_; -}; diff --git a/chrome/browser/profile.cc b/chrome/browser/profile.cc index a8377d3..1aa04e8 100644 --- a/chrome/browser/profile.cc +++ b/chrome/browser/profile.cc @@ -20,7 +20,6 @@ #include "chrome/browser/extensions/extensions_service.h" #include "chrome/browser/extensions/user_script_master.h" #include "chrome/browser/favicon_service.h" -#include "chrome/browser/force_tls_persister.h" #include "chrome/browser/history/history.h" #include "chrome/browser/in_process_webkit/webkit_context.h" #include "chrome/browser/net/chrome_url_request_context.h" @@ -265,7 +264,7 @@ class OffTheRecordProfileImpl : public Profile, virtual net::ForceTLSState* GetForceTLSState() { if (!force_tls_state_.get()) - force_tls_state_ = new net::ForceTLSState(); + force_tls_state_.reset(new net::ForceTLSState()); return force_tls_state_.get(); } @@ -522,7 +521,7 @@ class OffTheRecordProfileImpl : public Profile, scoped_ptr<SSLHostState> ssl_host_state_; // The ForceTLSState that only stores enabled sites in memory. - scoped_refptr<net::ForceTLSState> force_tls_state_; + scoped_ptr<net::ForceTLSState> force_tls_state_; // Time we were started. Time start_time_; @@ -824,11 +823,8 @@ SSLHostState* ProfileImpl::GetSSLHostState() { } net::ForceTLSState* ProfileImpl::GetForceTLSState() { - if (!force_tls_state_.get()) { - force_tls_state_ = new net::ForceTLSState(); - force_tls_persister_ = new ForceTLSPersister( - force_tls_state_.get(), g_browser_process->file_thread()); - } + if (!force_tls_state_.get()) + force_tls_state_.reset(new net::ForceTLSState()); return force_tls_state_.get(); } diff --git a/chrome/browser/profile.h b/chrome/browser/profile.h index 97e747b..83ae64c 100644 --- a/chrome/browser/profile.h +++ b/chrome/browser/profile.h @@ -34,7 +34,6 @@ class ExtensionProcessManager; class ExtensionMessageService; class ExtensionsService; class FaviconService; -class ForceTLSPersister; class HistoryService; class NavigationController; class PasswordStore; @@ -155,7 +154,7 @@ class Profile { // called. virtual SSLHostState* GetSSLHostState() = 0; - // Retrieves a pointer to the ForceTLSState associated with this profile. + // Retrieves a pointer to the ForceTLStSate associated with this profile. // The ForceTLSState is lazily created the first time that this method is // called. virtual net::ForceTLSState* GetForceTLSState() = 0; @@ -461,8 +460,7 @@ class ProfileImpl : public Profile, scoped_ptr<ExtensionProcessManager> extension_process_manager_; scoped_refptr<ExtensionMessageService> extension_message_service_; scoped_ptr<SSLHostState> ssl_host_state_; - scoped_refptr<net::ForceTLSState> force_tls_state_; - scoped_refptr<ForceTLSPersister> force_tls_persister_; + scoped_ptr<net::ForceTLSState> force_tls_state_; scoped_ptr<PrefService> prefs_; scoped_refptr<ThumbnailStore> thumbnail_store_; scoped_ptr<TemplateURLFetcher> template_url_fetcher_; |