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

Side by Side Diff: chrome/browser/extensions/app_notify_channel_setup.cc

Issue 8727024: Save the oauth client id used in App Notification setup (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed nits Created 9 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/app_notify_channel_setup.h" 5 #include "chrome/browser/extensions/app_notify_channel_setup.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
(...skipping 13 matching lines...) Expand all
24 #include "net/base/escape.h" 24 #include "net/base/escape.h"
25 #include "net/base/load_flags.h" 25 #include "net/base/load_flags.h"
26 #include "net/http/http_request_headers.h" 26 #include "net/http/http_request_headers.h"
27 #include "net/url_request/url_request_status.h" 27 #include "net/url_request/url_request_status.h"
28 28
29 using base::StringPrintf; 29 using base::StringPrintf;
30 using content::BrowserThread; 30 using content::BrowserThread;
31 using content::URLFetcher; 31 using content::URLFetcher;
32 32
33 namespace { 33 namespace {
34
34 static const char kChannelSetupAuthError[] = "unauthorized"; 35 static const char kChannelSetupAuthError[] = "unauthorized";
35 static const char kChannelSetupInternalError[] = "internal_error"; 36 static const char kChannelSetupInternalError[] = "internal_error";
36 static const char kChannelSetupCanceledByUser[] = "canceled_by_user"; 37 static const char kChannelSetupCanceledByUser[] = "canceled_by_user";
37 // TODO(munjal): Change these to use production URLs when we have them. 38 // TODO(munjal): Change these to use production URLs when we have them.
38 static const char kAuthorizationHeaderFormat[] = 39 static const char kAuthorizationHeaderFormat[] =
39 "Authorization: GoogleLogin auth=%s"; 40 "Authorization: GoogleLogin auth=%s";
40 static const char kOAuth2IssueTokenURL[] = 41 static const char kOAuth2IssueTokenURL[] =
41 "https://www.googleapis.com/oauth2/v2/IssueToken"; 42 "https://www.googleapis.com/oauth2/v2/IssueToken";
42 static const char kOAuth2IssueTokenBodyFormat[] = 43 static const char kOAuth2IssueTokenBodyFormat[] =
43 "force=true" 44 "force=true"
44 "&response_type=token" 45 "&response_type=token"
45 "&scope=%s" 46 "&scope=%s"
46 "&client_id=%s" 47 "&client_id=%s"
47 "&origin=%s"; 48 "&origin=%s";
48 static const char kOAuth2IssueTokenScope[] = 49 static const char kOAuth2IssueTokenScope[] =
49 "https://www.googleapis.com/auth/chromewebstore.notification"; 50 "https://www.googleapis.com/auth/chromewebstore.notification";
50 static const char kCWSChannelServiceURL[] = 51 static const char kCWSChannelServiceURL[] =
51 "https://www.googleapis.com/chromewebstore/" 52 "https://www.googleapis.com/chromewebstore/"
52 "v1.1/channels/id"; 53 "v1.1/channels/id";
53 static const char* kRelevantGaiaServices[] = { 54 static const char* kRelevantGaiaServices[] = {
54 GaiaConstants::kCWSService, 55 GaiaConstants::kCWSService,
55 GaiaConstants::kLSOService, 56 GaiaConstants::kLSOService,
56 }; 57 };
57 static const int kRelevantGaiaServicesCount = arraysize(kRelevantGaiaServices); 58 static const int kRelevantGaiaServicesCount = arraysize(kRelevantGaiaServices);
59
60 static AppNotifyChannelSetup::InterceptorForTests* g_interceptor_for_tests =
61 NULL;
62
58 } // namespace. 63 } // namespace.
59 64
65 // static
66 void AppNotifyChannelSetup::SetInterceptorForTests(
67 AppNotifyChannelSetup::InterceptorForTests* interceptor) {
68 // Only one interceptor at a time, please.
69 CHECK(g_interceptor_for_tests == NULL);
70 g_interceptor_for_tests = interceptor;
71 }
72
60 AppNotifyChannelSetup::AppNotifyChannelSetup( 73 AppNotifyChannelSetup::AppNotifyChannelSetup(
61 Profile* profile, 74 Profile* profile,
62 const std::string& extension_id, 75 const std::string& extension_id,
63 const std::string& client_id, 76 const std::string& client_id,
64 const GURL& requestor_url, 77 const GURL& requestor_url,
65 int return_route_id, 78 int return_route_id,
66 int callback_id, 79 int callback_id,
67 AppNotifyChannelUI* ui, 80 AppNotifyChannelUI* ui,
68 base::WeakPtr<AppNotifyChannelSetup::Delegate> delegate) 81 base::WeakPtr<AppNotifyChannelSetup::Delegate> delegate)
69 : profile_(profile), 82 : profile_(profile),
70 extension_id_(extension_id), 83 extension_id_(extension_id),
71 client_id_(client_id), 84 client_id_(client_id),
72 requestor_url_(requestor_url), 85 requestor_url_(requestor_url),
73 return_route_id_(return_route_id), 86 return_route_id_(return_route_id),
74 callback_id_(callback_id), 87 callback_id_(callback_id),
75 delegate_(delegate), 88 delegate_(delegate),
76 ui_(ui), 89 ui_(ui),
77 state_(INITIAL), 90 state_(INITIAL),
78 fetch_token_success_count_(0), 91 fetch_token_success_count_(0),
79 fetch_token_fail_count_(0) {} 92 fetch_token_fail_count_(0) {}
80 93
81 AppNotifyChannelSetup::~AppNotifyChannelSetup() {} 94 AppNotifyChannelSetup::~AppNotifyChannelSetup() {}
82 95
83 void AppNotifyChannelSetup::Start() { 96 void AppNotifyChannelSetup::Start() {
97 if (g_interceptor_for_tests) {
98 std::string channel_id;
99 std::string error;
100 g_interceptor_for_tests->DoIntercept(this, &channel_id, &error);
101 delegate_->AppNotifyChannelSetupComplete(channel_id, error, this);
102 return;
103 }
84 AddRef(); // Balanced in ReportResult. 104 AddRef(); // Balanced in ReportResult.
85 BeginLogin(); 105 BeginLogin();
86 } 106 }
87 107
88 void AppNotifyChannelSetup::Observe( 108 void AppNotifyChannelSetup::Observe(
89 int type, 109 int type,
90 const content::NotificationSource& source, 110 const content::NotificationSource& source,
91 const content::NotificationDetails& details) { 111 const content::NotificationDetails& details) {
92 if (type == chrome::NOTIFICATION_TOKEN_AVAILABLE) { 112 if (type == chrome::NOTIFICATION_TOKEN_AVAILABLE) {
93 TokenService::TokenAvailableDetails* tok_details = 113 TokenService::TokenAvailableDetails* tok_details =
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 } 330 }
311 } 331 }
312 332
313 void AppNotifyChannelSetup::ReportResult( 333 void AppNotifyChannelSetup::ReportResult(
314 const std::string& channel_id, 334 const std::string& channel_id,
315 const std::string& error) { 335 const std::string& error) {
316 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 336 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
317 CHECK(state_ == CHANNEL_ID_SETUP_DONE || state_ == ERROR_STATE); 337 CHECK(state_ == CHANNEL_ID_SETUP_DONE || state_ == ERROR_STATE);
318 338
319 if (delegate_.get()) { 339 if (delegate_.get()) {
320 delegate_->AppNotifyChannelSetupComplete( 340 delegate_->AppNotifyChannelSetupComplete(channel_id, error, this);
321 channel_id, error, return_route_id_, callback_id_);
322 } 341 }
323 Release(); // Matches AddRef in Start. 342 Release(); // Matches AddRef in Start.
324 } 343 }
325 344
326 // static 345 // static
327 GURL AppNotifyChannelSetup::GetCWSChannelServiceURL() { 346 GURL AppNotifyChannelSetup::GetCWSChannelServiceURL() {
328 CommandLine* command_line = CommandLine::ForCurrentProcess(); 347 CommandLine* command_line = CommandLine::ForCurrentProcess();
329 if (command_line->HasSwitch(switches::kAppNotifyChannelServerURL)) { 348 if (command_line->HasSwitch(switches::kAppNotifyChannelServerURL)) {
330 std::string switch_value = command_line->GetSwitchValueASCII( 349 std::string switch_value = command_line->GetSwitchValueASCII(
331 switches::kAppNotifyChannelServerURL); 350 switches::kAppNotifyChannelServerURL);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 DictionaryValue* dict = static_cast<DictionaryValue*>(value.get()); 402 DictionaryValue* dict = static_cast<DictionaryValue*>(value.get());
384 if (!dict->Get("id", &channel_id_value)) 403 if (!dict->Get("id", &channel_id_value))
385 return false; 404 return false;
386 if (channel_id_value->GetType() != base::Value::TYPE_STRING) 405 if (channel_id_value->GetType() != base::Value::TYPE_STRING)
387 return false; 406 return false;
388 407
389 StringValue* channel_id = static_cast<StringValue*>(channel_id_value); 408 StringValue* channel_id = static_cast<StringValue*>(channel_id_value);
390 channel_id->GetAsString(result); 409 channel_id->GetAsString(result);
391 return true; 410 return true;
392 } 411 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/app_notify_channel_setup.h ('k') | chrome/browser/extensions/app_notify_channel_setup_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698