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

Side by Side Diff: chrome/browser/extensions/api/copresence/copresence_api.cc

Issue 800613002: Scoping auth tokens by app (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removing unnecessary checks for empty app ID Created 6 years 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
« no previous file with comments | « chrome/browser/extensions/api/copresence/copresence_api.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/api/copresence/copresence_api.h" 5 #include "chrome/browser/extensions/api/copresence/copresence_api.h"
6 6
7 #include "base/lazy_instance.h" 7 #include "base/lazy_instance.h"
8 #include "base/memory/linked_ptr.h" 8 #include "base/memory/linked_ptr.h"
9 #include "chrome/browser/copresence/chrome_whispernet_client.h" 9 #include "chrome/browser/copresence/chrome_whispernet_client.h"
10 #include "chrome/browser/services/gcm/gcm_profile_service.h" 10 #include "chrome/browser/services/gcm/gcm_profile_service.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 manager_.reset(new copresence::CopresenceManagerImpl(this)); 51 manager_.reset(new copresence::CopresenceManagerImpl(this));
52 return manager_.get(); 52 return manager_.get();
53 } 53 }
54 54
55 copresence::WhispernetClient* CopresenceService::whispernet_client() { 55 copresence::WhispernetClient* CopresenceService::whispernet_client() {
56 if (!whispernet_client_ && !is_shutting_down_) 56 if (!whispernet_client_ && !is_shutting_down_)
57 whispernet_client_.reset(new ChromeWhispernetClient(browser_context_)); 57 whispernet_client_.reset(new ChromeWhispernetClient(browser_context_));
58 return whispernet_client_.get(); 58 return whispernet_client_.get();
59 } 59 }
60 60
61 const std::string CopresenceService::auth_token(const std::string& app_id)
62 const {
63 // This won't be const if we use map[]
64 const auto& key = auth_tokens_by_app_.find(app_id);
65 return key == auth_tokens_by_app_.end() ? std::string() : key->second;
66 }
67
61 void CopresenceService::set_api_key(const std::string& app_id, 68 void CopresenceService::set_api_key(const std::string& app_id,
62 const std::string& api_key) { 69 const std::string& api_key) {
63 DCHECK(!app_id.empty()); 70 DCHECK(!app_id.empty());
64 api_keys_by_app_[app_id] = api_key; 71 api_keys_by_app_[app_id] = api_key;
65 } 72 }
66 73
67 void CopresenceService::set_auth_token(const std::string& token) { 74 void CopresenceService::set_auth_token(const std::string& app_id,
68 auth_token_ = token; 75 const std::string& token) {
76 DCHECK(!app_id.empty());
77 auth_tokens_by_app_[app_id] = token;
69 } 78 }
70 79
71 void CopresenceService::set_manager_for_testing( 80 void CopresenceService::set_manager_for_testing(
72 scoped_ptr<copresence::CopresenceManager> manager) { 81 scoped_ptr<copresence::CopresenceManager> manager) {
73 manager_ = manager.Pass(); 82 manager_ = manager.Pass();
74 } 83 }
75 84
76 // static 85 // static
77 BrowserContextKeyedAPIFactory<CopresenceService>* 86 BrowserContextKeyedAPIFactory<CopresenceService>*
78 CopresenceService::GetFactoryInstance() { 87 CopresenceService::GetFactoryInstance() {
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 if (!PrepareReportRequestProto(params->operations, 186 if (!PrepareReportRequestProto(params->operations,
178 extension_id(), 187 extension_id(),
179 &service->apps_by_subscription_id(), 188 &service->apps_by_subscription_id(),
180 &request)) { 189 &request)) {
181 return RespondNow(Error(kInvalidOperationsMessage)); 190 return RespondNow(Error(kInvalidOperationsMessage));
182 } 191 }
183 192
184 service->manager()->ExecuteReportRequest( 193 service->manager()->ExecuteReportRequest(
185 request, 194 request,
186 extension_id(), 195 extension_id(),
187 service->auth_token(), 196 service->auth_token(extension_id()),
188 base::Bind(&CopresenceExecuteFunction::SendResult, this)); 197 base::Bind(&CopresenceExecuteFunction::SendResult, this));
189 return RespondLater(); 198 return RespondLater();
190 } 199 }
191 200
192 void CopresenceExecuteFunction::SendResult( 201 void CopresenceExecuteFunction::SendResult(
193 copresence::CopresenceStatus status) { 202 copresence::CopresenceStatus status) {
194 api::copresence::ExecuteStatus api_status = 203 api::copresence::ExecuteStatus api_status =
195 (status == copresence::SUCCESS) ? api::copresence::EXECUTE_STATUS_SUCCESS 204 (status == copresence::SUCCESS) ? api::copresence::EXECUTE_STATUS_SUCCESS
196 : api::copresence::EXECUTE_STATUS_FAILED; 205 : api::copresence::EXECUTE_STATUS_FAILED;
197 Respond(ArgumentList(api::copresence::Execute::Results::Create(api_status))); 206 Respond(ArgumentList(api::copresence::Execute::Results::Create(api_status)));
(...skipping 11 matching lines...) Expand all
209 return RespondNow(NoArguments()); 218 return RespondNow(NoArguments());
210 } 219 }
211 220
212 // CopresenceSetAuthTokenFunction implementation 221 // CopresenceSetAuthTokenFunction implementation
213 ExtensionFunction::ResponseAction CopresenceSetAuthTokenFunction::Run() { 222 ExtensionFunction::ResponseAction CopresenceSetAuthTokenFunction::Run() {
214 scoped_ptr<api::copresence::SetAuthToken::Params> params( 223 scoped_ptr<api::copresence::SetAuthToken::Params> params(
215 api::copresence::SetAuthToken::Params::Create(*args_)); 224 api::copresence::SetAuthToken::Params::Create(*args_));
216 EXTENSION_FUNCTION_VALIDATE(params.get()); 225 EXTENSION_FUNCTION_VALIDATE(params.get());
217 226
218 // The token may be set to empty, to clear it. 227 // The token may be set to empty, to clear it.
219 // TODO(ckehoe): Scope the auth token appropriately (crbug/423517).
220 CopresenceService::GetFactoryInstance()->Get(browser_context()) 228 CopresenceService::GetFactoryInstance()->Get(browser_context())
221 ->set_auth_token(params->token); 229 ->set_auth_token(extension_id(), params->token);
222 return RespondNow(NoArguments()); 230 return RespondNow(NoArguments());
223 } 231 }
224 232
225 } // namespace extensions 233 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/copresence/copresence_api.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698