| Index: chrome/browser/extensions/api/copresence/copresence_api.cc
|
| diff --git a/chrome/browser/extensions/api/copresence/copresence_api.cc b/chrome/browser/extensions/api/copresence/copresence_api.cc
|
| index 61749b8ff9938fdfaca0b5e7e19c75e523be2482..8fb4faccb7cd9e5e1a573105073ff8a42b1e3859 100644
|
| --- a/chrome/browser/extensions/api/copresence/copresence_api.cc
|
| +++ b/chrome/browser/extensions/api/copresence/copresence_api.cc
|
| @@ -30,13 +30,20 @@ const char kShuttingDownMessage[] = "Shutting down.";
|
|
|
| } // namespace
|
|
|
| -// CopresenceService implementation:
|
| +
|
| +// CopresenceService implementation.
|
|
|
| CopresenceService::CopresenceService(content::BrowserContext* context)
|
| : is_shutting_down_(false), browser_context_(context) {}
|
|
|
| CopresenceService::~CopresenceService() {}
|
|
|
| +void CopresenceService::Shutdown() {
|
| + is_shutting_down_ = true;
|
| + manager_.reset();
|
| + whispernet_client_.reset();
|
| +}
|
| +
|
| copresence::CopresenceManager* CopresenceService::manager() {
|
| if (!manager_ && !is_shutting_down_)
|
| manager_ = copresence::CopresenceManager::Create(this);
|
| @@ -49,10 +56,14 @@ copresence::WhispernetClient* CopresenceService::whispernet_client() {
|
| return whispernet_client_.get();
|
| }
|
|
|
| -void CopresenceService::Shutdown() {
|
| - is_shutting_down_ = true;
|
| - manager_.reset();
|
| - whispernet_client_.reset();
|
| +void CopresenceService::set_api_key(const std::string& app_id,
|
| + const std::string& api_key) {
|
| + DCHECK(!app_id.empty());
|
| + api_keys_by_app_[app_id] = api_key;
|
| +}
|
| +
|
| +void CopresenceService::set_auth_token(const std::string& token) {
|
| + auth_token_ = token;
|
| }
|
|
|
| void CopresenceService::set_manager_for_testing(
|
| @@ -112,8 +123,15 @@ const std::string CopresenceService::GetPlatformVersionString() const {
|
| return chrome::VersionInfo().CreateVersionString();
|
| }
|
|
|
| -const std::string CopresenceService::GetAPIKey() const {
|
| - return api_key_;
|
| +const std::string CopresenceService::GetAPIKey(const std::string& app_id)
|
| + const {
|
| + // This won't be const if we use map[]
|
| + const auto& key = api_keys_by_app_.find(app_id);
|
| + return key == api_keys_by_app_.end() ? std::string() : key->second;
|
| +}
|
| +
|
| +const std::string CopresenceService::GetAuthToken() const {
|
| + return auth_token_;
|
| }
|
|
|
| copresence::WhispernetClient* CopresenceService::GetWhispernetClient() {
|
| @@ -126,7 +144,7 @@ BrowserContextKeyedAPIFactory<CopresenceService>::DeclareFactoryDependencies() {
|
| DependsOn(ExtensionsBrowserClient::Get()->GetExtensionSystemFactory());
|
| }
|
|
|
| -// CopresenceExecuteFunction implementation:
|
| +// CopresenceExecuteFunction implementation.
|
| ExtensionFunction::ResponseAction CopresenceExecuteFunction::Run() {
|
| scoped_ptr<api::copresence::Execute::Params> params(
|
| api::copresence::Execute::Params::Create(*args_));
|
| @@ -164,7 +182,7 @@ void CopresenceExecuteFunction::SendResult(
|
| Respond(ArgumentList(api::copresence::Execute::Results::Create(api_status)));
|
| }
|
|
|
| -// CopresenceSetApiKeyFunction implementation:
|
| +// CopresenceSetApiKeyFunction implementation.
|
| ExtensionFunction::ResponseAction CopresenceSetApiKeyFunction::Run() {
|
| scoped_ptr<api::copresence::SetApiKey::Params> params(
|
| api::copresence::SetApiKey::Params::Create(*args_));
|
| @@ -172,7 +190,20 @@ ExtensionFunction::ResponseAction CopresenceSetApiKeyFunction::Run() {
|
|
|
| // The api key may be set to empty, to clear it.
|
| CopresenceService::GetFactoryInstance()->Get(browser_context())
|
| - ->set_api_key(params->api_key);
|
| + ->set_api_key(extension_id(), params->api_key);
|
| + return RespondNow(NoArguments());
|
| +}
|
| +
|
| +// CopresenceSetAuthTokenFunction implementation
|
| +ExtensionFunction::ResponseAction CopresenceSetAuthTokenFunction::Run() {
|
| + scoped_ptr<api::copresence::SetAuthToken::Params> params(
|
| + api::copresence::SetAuthToken::Params::Create(*args_));
|
| + EXTENSION_FUNCTION_VALIDATE(params.get());
|
| +
|
| + // The token may be set to empty, to clear it.
|
| + // TODO(ckehoe): Scope the auth token appropriately (crbug/423517).
|
| + CopresenceService::GetFactoryInstance()->Get(browser_context())
|
| + ->set_auth_token(params->token);
|
| return RespondNow(NoArguments());
|
| }
|
|
|
|
|