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

Side by Side Diff: chrome/browser/sync/util/user_settings.h

Issue 9699057: [Sync] Move 'sync' target to sync/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address Tim's comments Created 8 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2010 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_UTIL_USER_SETTINGS_H_
6 #define CHROME_BROWSER_SYNC_UTIL_USER_SETTINGS_H_
7 #pragma once
8
9 #include <map>
10 #include <string>
11
12 #include "base/synchronization/lock.h"
13 #include "build/build_config.h"
14
15 extern "C" struct sqlite3;
16
17 class FilePath;
18
19 namespace browser_sync {
20
21 void ExecOrDie(sqlite3* dbhandle, const char *query);
22 std::string APEncode(const std::string& in);
23 std::string APDecode(const std::string& in);
24
25 class URLFactory;
26
27 class UserSettings {
28 public:
29 // db_path is used for the main user settings.
30 // passwords_file contains hashes of passwords.
31 UserSettings();
32 ~UserSettings();
33 // Returns false (failure) if the db is a newer version.
34 bool Init(const FilePath& settings_path);
35 void StoreHashedPassword(const std::string& email,
36 const std::string& password);
37 bool VerifyAgainstStoredHash(const std::string& email,
38 const std::string& password);
39
40 // Set the username.
41 void SwitchUser(const std::string& email);
42
43 // Saves the email address and the named service token for the given user.
44 // Call this multiple times with the same email parameter to save multiple
45 // service tokens.
46 void SetAuthTokenForService(const std::string& email,
47 const std::string& service_name,
48 const std::string& long_lived_service_token);
49 // Erases all saved service tokens.
50 void ClearAllServiceTokens();
51
52 // Returns the user name whose credentials have been persisted.
53 bool GetLastUser(std::string* username);
54
55 // Returns the user name whose credentials have been persisted as well as a
56 // service token for the named service
57 bool GetLastUserAndServiceToken(const std::string& service_name,
58 std::string* username,
59 std::string* service_token);
60
61 void RemoveAllGuestSettings();
62
63 void StoreEmailForSignin(const std::string& signin,
64 const std::string& primary_email);
65
66 // Multiple email addresses can map to the same Google Account. This method
67 // returns the primary Google Account email associated with |signin|, which
68 // is used as both input and output.
69 bool GetEmailForSignin(std::string* signin);
70
71 std::string email() const;
72
73 // Get a unique ID suitable for use as the client ID. This ID has the
74 // lifetime of the user settings database. You may use this ID if your
75 // operating environment does not provide its own unique client ID.
76 std::string GetClientId();
77
78 protected:
79 struct ScopedDBHandle {
80 explicit ScopedDBHandle(UserSettings* settings);
81 inline sqlite3* get() const { return *handle_; }
82 base::AutoLock mutex_lock_;
83 sqlite3** const handle_;
84 };
85
86 friend struct ScopedDBHandle;
87 friend class URLFactory;
88
89 void MigrateOldVersionsAsNeeded(sqlite3* const handle, int current_version);
90
91 private:
92 std::string email_;
93 mutable base::Lock mutex_; // protects email_.
94
95 // We keep a single dbhandle.
96 sqlite3* dbhandle_;
97 base::Lock dbhandle_mutex_;
98
99 // TODO(sync): Use in-memory cache for service auth tokens on posix.
100 // Have someone competent in Windows switch it over to not use Sqlite in the
101 // future.
102 #ifndef OS_WIN
103 typedef std::map<std::string, std::string> ServiceTokenMap;
104 ServiceTokenMap service_tokens_;
105 #endif // OS_WIN
106
107 DISALLOW_COPY_AND_ASSIGN(UserSettings);
108 };
109
110 } // namespace browser_sync
111
112 #endif // CHROME_BROWSER_SYNC_UTIL_USER_SETTINGS_H_
OLDNEW
« no previous file with comments | « chrome/browser/sync/util/unrecoverable_error_info.cc ('k') | chrome/browser/sync/util/weak_handle.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698