Index: chrome/browser/extensions/updater/extension_downloader.h |
diff --git a/chrome/browser/extensions/updater/extension_downloader.h b/chrome/browser/extensions/updater/extension_downloader.h |
index a40427da068a7daf901ac88af19dd33419202bcb..14c5881187a6e5de2b6d012375de6133a89a0672 100644 |
--- a/chrome/browser/extensions/updater/extension_downloader.h |
+++ b/chrome/browser/extensions/updater/extension_downloader.h |
@@ -26,6 +26,8 @@ |
#include "net/url_request/url_fetcher_delegate.h" |
#include "url/gurl.h" |
+class IdentityProvider; |
+ |
namespace net { |
class URLFetcher; |
class URLRequestContextGetter; |
@@ -44,6 +46,7 @@ struct UpdateDetails { |
class ExtensionCache; |
class ExtensionUpdaterTest; |
+class WebstoreOAuth2TokenProvider; |
// A class that checks for updates of a given list of extensions, and downloads |
// the crx file when updates are found. It uses a |ExtensionDownloaderDelegate| |
@@ -52,9 +55,12 @@ class ExtensionUpdaterTest; |
class ExtensionDownloader : public net::URLFetcherDelegate { |
public: |
// |delegate| is stored as a raw pointer and must outlive the |
- // ExtensionDownloader. |
+ // ExtensionDownloader. |webstore_identity_provider| may be NULL if this |
+ // ExtensionDownloader does not need OAuth2 support; if not NULL, the |
+ // given IdentityProvider must outlive this ExtensionDownloader. |
ExtensionDownloader(ExtensionDownloaderDelegate* delegate, |
- net::URLRequestContextGetter* request_context); |
+ net::URLRequestContextGetter* request_context, |
+ IdentityProvider* webstore_identity_provider); |
virtual ~ExtensionDownloader(); |
// Adds |extension| to the list of extensions to check for updates. |
@@ -130,8 +136,14 @@ class ExtensionDownloader : public net::URLFetcherDelegate { |
std::string version; |
std::set<int> request_ids; |
- // Indicates whether or not the fetch is known to require credentials. |
- bool is_protected; |
+ enum CredentialsMode { |
+ CREDENTIALS_NONE = 0, |
+ CREDENTIALS_OAUTH2_TOKEN, |
+ CREDENTIALS_COOKIES, |
+ }; |
+ |
+ // Indicates the type of credentials to include with this fetch. |
+ CredentialsMode credentials; |
}; |
// Helper for AddExtension() and AddPendingExtension(). |
@@ -204,6 +216,16 @@ class ExtensionDownloader : public net::URLFetcherDelegate { |
const base::FilePath& crx_path, |
bool file_ownership_passed); |
+ // Potentially updates an ExtensionFetch's authentication state and returns |
+ // true| if the fetch should be retried. Returns |false| if the failure was |
Roger Tawa OOO till Jul 10th
2014/08/07 01:35:15
true| --> |true|
Ken Rockot(use gerrit already)
2014/08/07 16:49:09
Done.
|
+ // not related to authentication, leaving the ExtensionFetch data unmodified. |
+ bool IterateFetchCredentialsAfterFailure(ExtensionFetch* fetch, |
+ const net::URLRequestStatus& status, |
+ int response_code); |
+ |
+ // Receives an OAuth2 token to authenticate a Webstore CRX fetch. |
+ void OnWebstoreOAuth2TokenReceived(bool success, const std::string& token); |
Roger Tawa OOO till Jul 10th
2014/08/07 01:35:15
Nit: rename |token| to |access_token|, so its not
|
+ |
// The delegate that receives the crx files downloaded by the |
// ExtensionDownloader, and that fills in optional ping and update url data. |
ExtensionDownloaderDelegate* delegate_; |
@@ -240,6 +262,9 @@ class ExtensionDownloader : public net::URLFetcherDelegate { |
// Cache for .crx files. |
ExtensionCache* extension_cache_; |
+ // Acquires access tokens for webstore download URLs. |
+ scoped_ptr<WebstoreOAuth2TokenProvider> webstore_token_provider_; |
+ |
DISALLOW_COPY_AND_ASSIGN(ExtensionDownloader); |
}; |