Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5280)

Unified Diff: chrome/browser/net/transport_security_persister.cc

Issue 57993004: Remove content dependency from TransportSecurityPersister. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: asdf Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/net/transport_security_persister.cc
diff --git a/chrome/browser/net/transport_security_persister.cc b/chrome/browser/net/transport_security_persister.cc
index 9b803a39d266b19dd1a4de6ee2423f8f337fb810..afa186043107cb081bc2e5b9e7c4b7f6a4a72b25 100644
--- a/chrome/browser/net/transport_security_persister.cc
+++ b/chrome/browser/net/transport_security_persister.cc
@@ -11,15 +11,14 @@
#include "base/json/json_reader.h"
#include "base/json/json_writer.h"
#include "base/message_loop/message_loop.h"
-#include "base/path_service.h"
+#include "base/message_loop/message_loop_proxy.h"
+#include "base/sequenced_task_runner.h"
+#include "base/task_runner_util.h"
#include "base/values.h"
-#include "chrome/common/chrome_paths.h"
-#include "content/public/browser/browser_thread.h"
#include "crypto/sha2.h"
#include "net/cert/x509_certificate.h"
#include "net/http/transport_security_state.h"
-using content::BrowserThread;
using net::HashValue;
using net::HashValueTag;
using net::HashValueVector;
@@ -81,67 +80,39 @@ const char kDefault[] = "default";
const char kPinningOnly[] = "pinning-only";
const char kCreated[] = "created";
-} // namespace
-
-class TransportSecurityPersister::Loader {
- public:
- Loader(const base::WeakPtr<TransportSecurityPersister>& persister,
- const base::FilePath& path)
- : persister_(persister),
- path_(path),
- state_valid_(false) {
- }
-
- void Load() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
- state_valid_ = base::ReadFileToString(path_, &state_);
- }
-
- void CompleteLoad() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
-
- // Make sure we're deleted.
- scoped_ptr<Loader> deleter(this);
-
- if (!persister_.get() || !state_valid_)
- return;
- persister_->CompleteLoad(state_);
+std::string LoadState(const base::FilePath& path) {
+ std::string result;
+ if (!base::ReadFileToString(path, &result)) {
+ return "";
}
+ return result;
+}
- private:
- base::WeakPtr<TransportSecurityPersister> persister_;
-
- base::FilePath path_;
-
- std::string state_;
- bool state_valid_;
-
- DISALLOW_COPY_AND_ASSIGN(Loader);
-};
+} // namespace
TransportSecurityPersister::TransportSecurityPersister(
TransportSecurityState* state,
const base::FilePath& profile_path,
+ base::SequencedTaskRunner* background_runner,
bool readonly)
: transport_security_state_(state),
- writer_(profile_path.AppendASCII("TransportSecurity"),
- BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE)
- .get()),
+ writer_(profile_path.AppendASCII("TransportSecurity"), background_runner),
+ foreground_runner_(base::MessageLoop::current()->message_loop_proxy()),
+ background_runner_(background_runner),
readonly_(readonly),
weak_ptr_factory_(this) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
-
transport_security_state_->SetDelegate(this);
- Loader* loader = new Loader(weak_ptr_factory_.GetWeakPtr(), writer_.path());
- BrowserThread::PostTaskAndReply(
- BrowserThread::FILE, FROM_HERE,
- base::Bind(&Loader::Load, base::Unretained(loader)),
- base::Bind(&Loader::CompleteLoad, base::Unretained(loader)));
+ base::PostTaskAndReplyWithResult(
+ background_runner_,
+ FROM_HERE,
+ base::Bind(&::LoadState, writer_.path()),
+ base::Bind(&TransportSecurityPersister::CompleteLoad,
+ weak_ptr_factory_.GetWeakPtr()));
}
TransportSecurityPersister::~TransportSecurityPersister() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK(foreground_runner_->RunsTasksOnCurrentThread());
if (writer_.HasPendingWrite())
writer_.DoScheduledWrite();
@@ -151,7 +122,7 @@ TransportSecurityPersister::~TransportSecurityPersister() {
void TransportSecurityPersister::StateIsDirty(
TransportSecurityState* state) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK(foreground_runner_->RunsTasksOnCurrentThread());
DCHECK_EQ(transport_security_state_, state);
if (!readonly_)
@@ -159,7 +130,7 @@ void TransportSecurityPersister::StateIsDirty(
}
bool TransportSecurityPersister::SerializeData(std::string* output) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK(foreground_runner_->RunsTasksOnCurrentThread());
DictionaryValue toplevel;
base::Time now = base::Time::Now();
@@ -211,7 +182,7 @@ bool TransportSecurityPersister::SerializeData(std::string* output) {
bool TransportSecurityPersister::LoadEntries(const std::string& serialized,
bool* dirty) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK(foreground_runner_->RunsTasksOnCurrentThread());
transport_security_state_->ClearDynamicData();
return Deserialize(serialized, dirty, transport_security_state_);
@@ -327,7 +298,7 @@ bool TransportSecurityPersister::Deserialize(const std::string& serialized,
}
void TransportSecurityPersister::CompleteLoad(const std::string& state) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK(foreground_runner_->RunsTasksOnCurrentThread());
bool dirty = false;
if (!LoadEntries(state, &dirty)) {
« no previous file with comments | « chrome/browser/net/transport_security_persister.h ('k') | chrome/browser/net/transport_security_persister_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698