OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef CHROME_BROWSER_SYNC_CREDENTIAL_CACHE_WIN_H_ | |
6 #define CHROME_BROWSER_SYNC_CREDENTIAL_CACHE_WIN_H_ | |
7 #pragma once | |
8 | |
9 | |
10 #include "base/basictypes.h" | |
11 #include "base/file_path.h" | |
12 #include "base/memory/ref_counted.h" | |
13 | |
14 #include <string> | |
Andrew T Wilson (Slow)
2012/06/26 23:26:13
std includes go above project-specific includes.
Raghu Simha
2012/07/19 06:57:07
Done.
| |
15 | |
16 namespace base { | |
17 class StringValue; | |
18 class Value; | |
19 } | |
20 | |
21 namespace csync { | |
22 | |
23 // Encapsulates the fields that are required in order to automatically start up | |
24 // sync. Used on Windows 8 after the user has manually signed in to Desktop | |
25 // or Metro, to auto-start sync on the alternate Metro or Desktop profile. | |
26 // RefCounted so that when SyncBackendHost or SigninManager want to persist sync | |
27 // credentials to file, they can pass in a CredentialCache object to one of the | |
28 // Persist* helper functions defined below, and not have to worry about | |
29 // cleaning up the object. | |
Roger Tawa OOO till Jul 10th
2012/06/27 21:23:28
I'm not sure why you need this class. why can't y
Raghu Simha
2012/07/19 06:57:07
The design has changed pretty significantly. Pleas
| |
30 class CredentialCache : public base::RefCounted<CredentialCache>{ | |
Roger Tawa OOO till Jul 10th
2012/06/27 21:23:28
space before {
| |
31 public: | |
32 // Instantiates a CredentialCache object with credentials that will be | |
33 // persisted in |profile_dir| by one of the Persist* methods. | |
34 CredentialCache(const std::string& authenticated_username, | |
35 const std::string& sid, | |
36 const std::string& lsid, | |
37 const std::string& encryption_bootstrap_token, | |
38 const FilePath& profile_dir); | |
39 | |
40 // Instantiates an empty CredentialCache object that will be populated by | |
41 // LoadCredentialsFromAlternateProfile with credentials from the alternate | |
42 // profile directory of |profile_dir|. | |
43 explicit CredentialCache(const FilePath& profile_dir); | |
44 | |
45 // Returns true if |profile_dir| is the "Default" folder in Chrome's default | |
46 // user data directory, and false otherwise. | |
47 static bool IsDefaultProfileDir(const FilePath& profile_dir); | |
48 | |
49 // Encrypts and base 64 encodes |plaintext|, converts the result to a | |
Roger Tawa OOO till Jul 10th
2012/06/27 21:23:28
|plaintext| not right. Document that the caller n
Raghu Simha
2012/07/19 06:57:07
Done.
| |
50 // StringValue, and returns the result. | |
51 static base::StringValue* PackCredential(const std::string& clear_text); | |
52 | |
53 // Extracts a string from the Value |packed|, base 64 decodes and decrypts it, | |
54 // and writes the result to |unpacked|. | |
55 static void UnpackCredential(const base::Value* packed, | |
Roger Tawa OOO till Jul 10th
2012/06/27 21:23:28
use a const ref?
Raghu Simha
2012/07/19 06:57:07
Done.
| |
56 std::string* unpacked); | |
57 | |
58 // Persists auth tokens to the sync credential cache in |profile_dir_|. Called | |
59 // by SigninManager after a successful signin. Must be run on the FILE | |
60 // BrowserThread, and only for the "Default" profile. Takes over ownership of | |
Andrew T Wilson (Slow)
2012/06/26 23:26:13
Nobody owns a refcounted ptr, so it's not true tha
Raghu Simha
2012/07/19 06:57:07
This method has been removed.
| |
61 // |credentials|. | |
62 static void PersistAuthTokens(scoped_refptr<CredentialCache> credentials); | |
63 | |
64 // Persists the encryption bootstrap token to the sync credential cache in | |
65 // |profile_dir_|. Called by SyncBackendHost after successfully starting sync | |
66 // for encrypted datatypes. Must be run on the FILE BrowserThread, and only | |
67 // for the "Default" profile. Takes over ownership of |credentials|. | |
Andrew T Wilson (Slow)
2012/06/26 23:26:13
Nobody owns a refcounted object, so this doesn't t
Raghu Simha
2012/07/19 06:57:07
This method has been removed.
| |
68 static void PersistEncryptionBootstrapToken( | |
69 scoped_refptr<CredentialCache> credentials); | |
70 | |
71 // Reads sign in auth tokens and the encryption bootstrap token from the sync | |
72 // credential cache in the alternate profile directory on Windows 8. | |
73 // Called by ProfileSyncService while trying to automatically and silently | |
74 // start sync from cached credentials. Must be run on the FILE BrowserThread, | |
75 // and only for the "Default" profile. | |
76 static void LoadCredentialsFromAlternateProfile( | |
77 scoped_refptr<CredentialCache> credentials); | |
78 | |
79 // Member accessors. | |
80 std::string authenticated_username() const { return authenticated_username_; } | |
81 std::string sid() const { return sid_; } | |
82 std::string lsid() const { return lsid_; } | |
83 std::string encryption_bootstrap_token() const { | |
84 return encryption_bootstrap_token_; | |
85 } | |
Roger Tawa OOO till Jul 10th
2012/06/27 21:23:28
i would return const ref return values for all the
Raghu Simha
2012/07/19 06:57:07
These methods have been removed.
| |
86 | |
87 protected: | |
88 // Ensures that file operations are running on the FILE BrowserThread. Virtual | |
89 // so that it can be mocked by unit tests. | |
90 virtual bool RunningOnCorrectThread() const; | |
Roger Tawa OOO till Jul 10th
2012/06/27 21:23:28
I think the name of this function should say "file
Raghu Simha
2012/07/19 06:57:07
This method has been removed.
| |
91 | |
92 // Ensures that |profile_dir_| is the default profile directory, since we do | |
93 // not cache credentials in non-default directories. Virtual so that it can | |
94 // be mocked by unit tests. | |
95 virtual bool RunningInCorrectProfileDir() const; | |
Roger Tawa OOO till Jul 10th
2012/06/27 21:23:28
I think the name of this function should say "defa
Raghu Simha
2012/07/19 06:57:07
This method has been removed.
| |
96 | |
97 // Returns the path to the sync credentials file in the default Desktop | |
98 // profile directory if we are running in Metro mode, and vice versa. Virtual | |
99 // so that it can be mocked by unit tests. | |
100 virtual FilePath GetCredentialPathInAlternateProfile() const; | |
101 | |
102 private: | |
103 // RefCounted implementation. | |
104 friend class base::RefCounted<CredentialCache>; | |
105 virtual ~CredentialCache(); | |
106 | |
107 // Credential fields. | |
108 std::string authenticated_username_; | |
109 std::string sid_; | |
110 std::string lsid_; | |
111 std::string encryption_bootstrap_token_; | |
112 | |
113 // The profile directory in which the credential cache exists. | |
114 FilePath profile_dir_; | |
115 | |
116 DISALLOW_COPY_AND_ASSIGN(CredentialCache); | |
117 }; | |
118 | |
119 } // namespace csync | |
120 | |
121 #endif // CHROME_BROWSER_SYNC_CREDENTIAL_CACHE_WIN_H_ | |
OLD | NEW |