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

Unified Diff: net/base/force_tls_state.h

Issue 186014: ForceTLS: persist to disk (Closed)
Patch Set: ... Created 11 years, 4 months 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: net/base/force_tls_state.h
diff --git a/net/base/force_tls_state.h b/net/base/force_tls_state.h
index e52adb9c3a46e02f50a0e2c05d028c9534284ee1..6c537ee651e2df49530f1f5d02b481144dbe2158 100644
--- a/net/base/force_tls_state.h
+++ b/net/base/force_tls_state.h
@@ -5,11 +5,13 @@
#ifndef NET_BASE_FORCE_TLS_STATE_H_
#define NET_BASE_FORCE_TLS_STATE_H_
-#include <set>
+#include <map>
#include <string>
#include "base/basictypes.h"
#include "base/lock.h"
+#include "base/ref_counted.h"
+#include "base/time.h"
class GURL;
@@ -21,7 +23,7 @@ namespace net {
// then we refuse to talk to the host over HTTP, treat all certificate errors as
// fatal, and refuse to load any mixed content.
//
-class ForceTLSState {
+class ForceTLSState : public base::RefCountedThreadSafe<ForceTLSState> {
public:
ForceTLSState();
@@ -30,7 +32,8 @@ class ForceTLSState {
void DidReceiveHeader(const GURL& url, const std::string& value);
// Enable ForceTLS for |host|.
- void EnableHost(const std::string& host);
+ void EnableHost(const std::string& host, base::Time expiry,
+ bool include_subdomains);
// Returns whether |host| has had ForceTLS enabled.
bool IsEnabledForHost(const std::string& host);
@@ -43,13 +46,33 @@ class ForceTLSState {
int* max_age,
bool* include_subdomains);
+ struct State {
+ base::Time expiry; // the absolute time (UTC) when this record expires
+ bool include_subdomains; // subdomains included?
+ };
+
+ // Set a callback which is called on an arbitary thread when the state of
+ // this object is updated. The callback may not block and may not reenter
+ // this object.
+ void SetDirtyCallback(void (*callback) (void*), void* userdata);
+
+ bool Serialise(std::string* output);
+ bool Deserialise(const std::string& state);
+
private:
+ // If we have a callback configured, call it to let our serialiser know that
+ // our state is dirty.
+ void DirtyNotify();
+
// The set of hosts that have enabled ForceTLS.
- std::set<std::string> enabled_hosts_;
+ std::map<std::string, State> enabled_hosts_;
// Protect access to our data members with this lock.
Lock lock_;
+ void (*callback_) (void*);
+ void* callback_userdata_;
+
DISALLOW_COPY_AND_ASSIGN(ForceTLSState);
};
« no previous file with comments | « chrome/chrome.gyp ('k') | net/base/force_tls_state.cc » ('j') | net/base/force_tls_state.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698