Chromium Code Reviews| Index: chrome/browser/sync/credential_cache_win.h |
| diff --git a/chrome/browser/sync/credential_cache_win.h b/chrome/browser/sync/credential_cache_win.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..f9c984e538646b7810c8f887315629f3ced5bf94 |
| --- /dev/null |
| +++ b/chrome/browser/sync/credential_cache_win.h |
| @@ -0,0 +1,121 @@ |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef CHROME_BROWSER_SYNC_CREDENTIAL_CACHE_WIN_H_ |
| +#define CHROME_BROWSER_SYNC_CREDENTIAL_CACHE_WIN_H_ |
| +#pragma once |
| + |
| + |
| +#include "base/basictypes.h" |
| +#include "base/file_path.h" |
| +#include "base/memory/ref_counted.h" |
| + |
| +#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.
|
| + |
| +namespace base { |
| +class StringValue; |
| +class Value; |
| +} |
| + |
| +namespace csync { |
| + |
| +// Encapsulates the fields that are required in order to automatically start up |
| +// sync. Used on Windows 8 after the user has manually signed in to Desktop |
| +// or Metro, to auto-start sync on the alternate Metro or Desktop profile. |
| +// RefCounted so that when SyncBackendHost or SigninManager want to persist sync |
| +// credentials to file, they can pass in a CredentialCache object to one of the |
| +// Persist* helper functions defined below, and not have to worry about |
| +// 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
|
| +class CredentialCache : public base::RefCounted<CredentialCache>{ |
|
Roger Tawa OOO till Jul 10th
2012/06/27 21:23:28
space before {
|
| + public: |
| + // Instantiates a CredentialCache object with credentials that will be |
| + // persisted in |profile_dir| by one of the Persist* methods. |
| + CredentialCache(const std::string& authenticated_username, |
| + const std::string& sid, |
| + const std::string& lsid, |
| + const std::string& encryption_bootstrap_token, |
| + const FilePath& profile_dir); |
| + |
| + // Instantiates an empty CredentialCache object that will be populated by |
| + // LoadCredentialsFromAlternateProfile with credentials from the alternate |
| + // profile directory of |profile_dir|. |
| + explicit CredentialCache(const FilePath& profile_dir); |
| + |
| + // Returns true if |profile_dir| is the "Default" folder in Chrome's default |
| + // user data directory, and false otherwise. |
| + static bool IsDefaultProfileDir(const FilePath& profile_dir); |
| + |
| + // 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.
|
| + // StringValue, and returns the result. |
| + static base::StringValue* PackCredential(const std::string& clear_text); |
| + |
| + // Extracts a string from the Value |packed|, base 64 decodes and decrypts it, |
| + // and writes the result to |unpacked|. |
| + 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.
|
| + std::string* unpacked); |
| + |
| + // Persists auth tokens to the sync credential cache in |profile_dir_|. Called |
| + // by SigninManager after a successful signin. Must be run on the FILE |
| + // 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.
|
| + // |credentials|. |
| + static void PersistAuthTokens(scoped_refptr<CredentialCache> credentials); |
| + |
| + // Persists the encryption bootstrap token to the sync credential cache in |
| + // |profile_dir_|. Called by SyncBackendHost after successfully starting sync |
| + // for encrypted datatypes. Must be run on the FILE BrowserThread, and only |
| + // 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.
|
| + static void PersistEncryptionBootstrapToken( |
| + scoped_refptr<CredentialCache> credentials); |
| + |
| + // Reads sign in auth tokens and the encryption bootstrap token from the sync |
| + // credential cache in the alternate profile directory on Windows 8. |
| + // Called by ProfileSyncService while trying to automatically and silently |
| + // start sync from cached credentials. Must be run on the FILE BrowserThread, |
| + // and only for the "Default" profile. |
| + static void LoadCredentialsFromAlternateProfile( |
| + scoped_refptr<CredentialCache> credentials); |
| + |
| + // Member accessors. |
| + std::string authenticated_username() const { return authenticated_username_; } |
| + std::string sid() const { return sid_; } |
| + std::string lsid() const { return lsid_; } |
| + std::string encryption_bootstrap_token() const { |
| + return encryption_bootstrap_token_; |
| + } |
|
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.
|
| + |
| + protected: |
| + // Ensures that file operations are running on the FILE BrowserThread. Virtual |
| + // so that it can be mocked by unit tests. |
| + 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.
|
| + |
| + // Ensures that |profile_dir_| is the default profile directory, since we do |
| + // not cache credentials in non-default directories. Virtual so that it can |
| + // be mocked by unit tests. |
| + 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.
|
| + |
| + // Returns the path to the sync credentials file in the default Desktop |
| + // profile directory if we are running in Metro mode, and vice versa. Virtual |
| + // so that it can be mocked by unit tests. |
| + virtual FilePath GetCredentialPathInAlternateProfile() const; |
| + |
| + private: |
| + // RefCounted implementation. |
| + friend class base::RefCounted<CredentialCache>; |
| + virtual ~CredentialCache(); |
| + |
| + // Credential fields. |
| + std::string authenticated_username_; |
| + std::string sid_; |
| + std::string lsid_; |
| + std::string encryption_bootstrap_token_; |
| + |
| + // The profile directory in which the credential cache exists. |
| + FilePath profile_dir_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(CredentialCache); |
| +}; |
| + |
| +} // namespace csync |
| + |
| +#endif // CHROME_BROWSER_SYNC_CREDENTIAL_CACHE_WIN_H_ |