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

Side by Side Diff: chrome/browser/strict_transport_security_persister.h

Issue 342068: Third patch in getting rid of caching MessageLoop pointers and always using C... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/spellchecker.cc ('k') | chrome/browser/strict_transport_security_persister.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // StrictTransportSecurityState maintains an in memory database containing the 5 // StrictTransportSecurityState maintains an in memory database containing the
6 // list of hosts that currently have strict transport security enabled. This 6 // list of hosts that currently have strict transport security enabled. This
7 // singleton object deals with writing that data out to disk as needed and 7 // singleton object deals with writing that data out to disk as needed and
8 // loading it at startup. 8 // loading it at startup.
9 9
10 // At startup we need to load the strict transport security state from the 10 // At startup we need to load the strict transport security state from the
11 // disk. For the moment, we don't want to delay startup for this load, so we 11 // disk. For the moment, we don't want to delay startup for this load, so we
12 // let the StrictTransportSecurityState run for a while without being loaded. 12 // let the StrictTransportSecurityState run for a while without being loaded.
13 // This means that it's possible for pages opened very quickly not to get the 13 // This means that it's possible for pages opened very quickly not to get the
14 // correct strict transport security information. 14 // correct strict transport security information.
15 // 15 //
16 // To load the state, we schedule a Task on the file thread which loads, 16 // To load the state, we schedule a Task on the file thread which loads,
17 // deserialises and configures the StrictTransportSecurityState. 17 // deserialises and configures the StrictTransportSecurityState.
18 // 18 //
19 // The StrictTransportSecurityState object supports running a callback function 19 // The StrictTransportSecurityState object supports running a callback function
20 // when it changes. This object registers the callback, pointing at itself. 20 // when it changes. This object registers the callback, pointing at itself.
21 // 21 //
22 // StrictTransportSecurityState calls... 22 // StrictTransportSecurityState calls...
23 // StrictTransportSecurityPersister::StateIsDirty 23 // StrictTransportSecurityPersister::StateIsDirty
24 // since the callback isn't allowed to block or reenter, we schedule a Task 24 // since the callback isn't allowed to block or reenter, we schedule a Task
25 // on |file_thread_| after some small amount of time 25 // on the file thread after some small amount of time
26 // 26 //
27 // ... 27 // ...
28 // 28 //
29 // StrictTransportSecurityPersister::SerialiseState 29 // StrictTransportSecurityPersister::SerialiseState
30 // copies the current state of the StrictTransportSecurityState, serialises 30 // copies the current state of the StrictTransportSecurityState, serialises
31 // and writes to disk. 31 // and writes to disk.
32 32
33 #include "base/file_path.h" 33 #include "base/file_path.h"
34 #include "base/lock.h" 34 #include "base/lock.h"
35 #include "base/ref_counted.h" 35 #include "base/ref_counted.h"
36 #include "net/base/strict_transport_security_state.h" 36 #include "net/base/strict_transport_security_state.h"
37 37
38 namespace base {
39 class Thread;
40 }
41 38
42 class StrictTransportSecurityPersister : 39 class StrictTransportSecurityPersister :
43 public base::RefCountedThreadSafe<StrictTransportSecurityPersister>, 40 public base::RefCountedThreadSafe<StrictTransportSecurityPersister>,
44 public net::StrictTransportSecurityState::Delegate { 41 public net::StrictTransportSecurityState::Delegate {
45 public: 42 public:
46 StrictTransportSecurityPersister(net::StrictTransportSecurityState* state, 43 StrictTransportSecurityPersister(net::StrictTransportSecurityState* state,
47 base::Thread* file_thread,
48 const FilePath& profile_path); 44 const FilePath& profile_path);
49 45
50 ~StrictTransportSecurityPersister(); 46 ~StrictTransportSecurityPersister();
51 47
52 // Called by the StrictTransportSecurityState when it changes its state. 48 // Called by the StrictTransportSecurityState when it changes its state.
53 virtual void StateIsDirty(net::StrictTransportSecurityState*); 49 virtual void StateIsDirty(net::StrictTransportSecurityState*);
54 50
55 private: 51 private:
56 // a Task callback for when the state needs to be written out. 52 // a Task callback for when the state needs to be written out.
57 void SerialiseState(); 53 void SerialiseState();
58 54
59 // a Task callback for when the state needs to be loaded from disk at startup. 55 // a Task callback for when the state needs to be loaded from disk at startup.
60 void LoadState(); 56 void LoadState();
61 57
62 Lock lock_; // protects all the members 58 Lock lock_; // protects all the members
63 59
64 // true when the state object has signaled that we're dirty and we haven't 60 // true when the state object has signaled that we're dirty and we haven't
65 // serialised the state yet. 61 // serialised the state yet.
66 bool state_is_dirty_; 62 bool state_is_dirty_;
67 63
68 scoped_refptr<net::StrictTransportSecurityState> 64 scoped_refptr<net::StrictTransportSecurityState>
69 strict_transport_security_state_; 65 strict_transport_security_state_;
70
71 // This is a thread which can perform file access.
72 base::Thread* const file_thread_;
73
74 // The path to the file in which we store the serialised state. 66 // The path to the file in which we store the serialised state.
75 const FilePath state_file_; 67 const FilePath state_file_;
76 }; 68 };
OLDNEW
« no previous file with comments | « chrome/browser/spellchecker.cc ('k') | chrome/browser/strict_transport_security_persister.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698