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

Side by Side Diff: chrome/browser/ui/webui/sync_setup_handler.cc

Issue 7399015: Sync Promo: Add a way to collapse the sync promo (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address review feedback Created 9 years, 5 months 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/ui/webui/options/sync_setup_handler.h" 5 #include "chrome/browser/ui/webui/sync_setup_handler.h"
6 6
7 #include "base/json/json_reader.h" 7 #include "base/json/json_reader.h"
8 #include "base/json/json_writer.h" 8 #include "base/json/json_writer.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "chrome/browser/google/google_util.h" 10 #include "chrome/browser/google/google_util.h"
11 #include "chrome/browser/profiles/profile.h" 11 #include "chrome/browser/profiles/profile.h"
12 #include "chrome/browser/sync/profile_sync_service.h" 12 #include "chrome/browser/sync/profile_sync_service.h"
13 #include "chrome/browser/sync/sync_setup_flow.h" 13 #include "chrome/browser/sync/sync_setup_flow.h"
14 #include "chrome/common/url_constants.h" 14 #include "chrome/common/url_constants.h"
15 #include "content/browser/tab_contents/tab_contents.h" 15 #include "content/browser/tab_contents/tab_contents.h"
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 SyncSetupHandler::SyncSetupHandler() : flow_(NULL) { 150 SyncSetupHandler::SyncSetupHandler() : flow_(NULL) {
151 } 151 }
152 152
153 SyncSetupHandler::~SyncSetupHandler() { 153 SyncSetupHandler::~SyncSetupHandler() {
154 // This case is hit when the user performs a back navigation. 154 // This case is hit when the user performs a back navigation.
155 if (flow_) 155 if (flow_)
156 flow_->OnDialogClosed(""); 156 flow_->OnDialogClosed("");
157 } 157 }
158 158
159 void SyncSetupHandler::GetLocalizedValues(DictionaryValue* localized_strings) { 159 void SyncSetupHandler::GetLocalizedValues(DictionaryValue* localized_strings) {
160 GetStaticLocalizedValues(localized_strings);
161 }
162
163 void SyncSetupHandler::GetStaticLocalizedValues(
164 DictionaryValue* localized_strings) {
160 DCHECK(localized_strings); 165 DCHECK(localized_strings);
161 166
162 localized_strings->SetString( 167 localized_strings->SetString(
163 "invalidPasswordHelpURL", 168 "invalidPasswordHelpURL",
164 google_util::StringAppendGoogleLocaleParam(kInvalidPasswordHelpUrl)); 169 google_util::StringAppendGoogleLocaleParam(kInvalidPasswordHelpUrl));
165 localized_strings->SetString( 170 localized_strings->SetString(
166 "cannotAccessAccountURL", 171 "cannotAccessAccountURL",
167 google_util::StringAppendGoogleLocaleParam(kCanNotAccessAccountUrl)); 172 google_util::StringAppendGoogleLocaleParam(kCanNotAccessAccountUrl));
168 localized_strings->SetString( 173 localized_strings->SetString(
169 "createNewAccountURL", 174 "createNewAccountURL",
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 { "cancelWarningHeader", IDS_SYNC_PASSPHRASE_CANCEL_WARNING_HEADER }, 257 { "cancelWarningHeader", IDS_SYNC_PASSPHRASE_CANCEL_WARNING_HEADER },
253 { "cancelWarning", IDS_SYNC_PASSPHRASE_CANCEL_WARNING }, 258 { "cancelWarning", IDS_SYNC_PASSPHRASE_CANCEL_WARNING },
254 { "yes", IDS_SYNC_PASSPHRASE_CANCEL_YES }, 259 { "yes", IDS_SYNC_PASSPHRASE_CANCEL_YES },
255 { "no", IDS_SYNC_PASSPHRASE_CANCEL_NO }, 260 { "no", IDS_SYNC_PASSPHRASE_CANCEL_NO },
256 { "sectionExplicitMessagePrefix", IDS_SYNC_PASSPHRASE_MSG_EXPLICIT_PREFIX }, 261 { "sectionExplicitMessagePrefix", IDS_SYNC_PASSPHRASE_MSG_EXPLICIT_PREFIX },
257 { "sectionExplicitMessagePostfix", 262 { "sectionExplicitMessagePostfix",
258 IDS_SYNC_PASSPHRASE_MSG_EXPLICIT_POSTFIX }, 263 IDS_SYNC_PASSPHRASE_MSG_EXPLICIT_POSTFIX },
259 { "encryptedDataTypesTitle", IDS_SYNC_ENCRYPTION_DATA_TYPES_TITLE }, 264 { "encryptedDataTypesTitle", IDS_SYNC_ENCRYPTION_DATA_TYPES_TITLE },
260 { "encryptSensitiveOption", IDS_SYNC_ENCRYPT_SENSITIVE_DATA }, 265 { "encryptSensitiveOption", IDS_SYNC_ENCRYPT_SENSITIVE_DATA },
261 { "encryptAllOption", IDS_SYNC_ENCRYPT_ALL_DATA }, 266 { "encryptAllOption", IDS_SYNC_ENCRYPT_ALL_DATA },
267 { "encryptAllOption", IDS_SYNC_ENCRYPT_ALL_DATA },
268 { "statusNotConnected", IDS_SYNC_STATUS_NOT_CONNECTED }
262 }; 269 };
263 270
264 RegisterStrings(localized_strings, resources, arraysize(resources)); 271 RegisterStrings(localized_strings, resources, arraysize(resources));
265 } 272 }
266 273
267 void SyncSetupHandler::Initialize() { 274 void SyncSetupHandler::Initialize() {
268 } 275 }
269 276
270 void SyncSetupHandler::RegisterMessages() { 277 void SyncSetupHandler::RegisterMessages() {
271 web_ui_->RegisterMessageCallback("SyncSetupDidClosePage", 278 web_ui_->RegisterMessageCallback("SyncSetupDidClosePage",
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 333
327 void SyncSetupHandler::SetFlow(SyncSetupFlow* flow) { 334 void SyncSetupHandler::SetFlow(SyncSetupFlow* flow) {
328 flow_ = flow; 335 flow_ = flow;
329 } 336 }
330 337
331 void SyncSetupHandler::Focus() { 338 void SyncSetupHandler::Focus() {
332 static_cast<RenderViewHostDelegate*>(web_ui_->tab_contents())->Activate(); 339 static_cast<RenderViewHostDelegate*>(web_ui_->tab_contents())->Activate();
333 } 340 }
334 341
335 void SyncSetupHandler::OnDidClosePage(const ListValue* args) { 342 void SyncSetupHandler::OnDidClosePage(const ListValue* args) {
336 if (flow_) { 343 CloseSyncSetup();
337 flow_->OnDialogClosed(std::string());
338 flow_ = NULL;
339 }
340 } 344 }
341 345
342 void SyncSetupHandler::HandleSubmitAuth(const ListValue* args) { 346 void SyncSetupHandler::HandleSubmitAuth(const ListValue* args) {
343 std::string json; 347 std::string json;
344 if (!args->GetString(0, &json)) { 348 if (!args->GetString(0, &json)) {
345 NOTREACHED() << "Could not read JSON argument"; 349 NOTREACHED() << "Could not read JSON argument";
346 return; 350 return;
347 } 351 }
348 352
349 if (json.empty()) 353 if (json.empty())
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 DCHECK(flow_); 408 DCHECK(flow_);
405 flow_->OnPassphraseEntry(passphrase); 409 flow_->OnPassphraseEntry(passphrase);
406 } 410 }
407 411
408 void SyncSetupHandler::HandlePassphraseCancel(const ListValue* args) { 412 void SyncSetupHandler::HandlePassphraseCancel(const ListValue* args) {
409 DCHECK(flow_); 413 DCHECK(flow_);
410 flow_->OnPassphraseCancel(); 414 flow_->OnPassphraseCancel();
411 } 415 }
412 416
413 void SyncSetupHandler::HandleAttachHandler(const ListValue* args) { 417 void SyncSetupHandler::HandleAttachHandler(const ListValue* args) {
414 DCHECK(web_ui_); 418 OpenSyncSetup();
415 DCHECK(!flow_);
416
417 ProfileSyncService* service = web_ui_->GetProfile()->GetProfileSyncService();
418 if (!service) {
419 // If there's no sync service, the user tried to manually invoke a syncSetup
420 // URL, but sync features are disabled. We need to close the overlay for
421 // this (rare) case.
422 web_ui_->CallJavascriptFunction("OptionsPage.closeOverlay");
423 return;
424 }
425
426 // If the wizard is not visible, step into the appropriate UI state.
427 if (!service->get_wizard().IsVisible())
428 HandleShowSetupUI(NULL);
429
430 // The SyncSetupFlow will set itself as the |flow_|.
431 if (!service->get_wizard().AttachSyncSetupHandler(this)) {
432 // If attach fails, a wizard is already activated and attached to a flow
433 // handler.
434 web_ui_->CallJavascriptFunction("OptionsPage.closeOverlay");
435 service->get_wizard().Focus();
436 }
437 } 419 }
438 420
439 void SyncSetupHandler::HandleShowErrorUI(const ListValue* args) { 421 void SyncSetupHandler::HandleShowErrorUI(const ListValue* args) {
440 DCHECK(!flow_); 422 DCHECK(!flow_);
441 423
442 ProfileSyncService* service = 424 ProfileSyncService* service =
443 web_ui_->GetProfile()->GetProfileSyncService(); 425 web_ui_->GetProfile()->GetProfileSyncService();
444 DCHECK(service); 426 DCHECK(service);
445 427
446 service->get_wizard().Step(SyncSetupWizard::NONFATAL_ERROR); 428 service->get_wizard().Step(SyncSetupWizard::NONFATAL_ERROR);
447 429
448 // The SyncSetupFlow will set itself as the |flow_|. 430 // The SyncSetupFlow will set itself as the |flow_|.
449 if (!service->get_wizard().AttachSyncSetupHandler(this)) { 431 if (!service->get_wizard().AttachSyncSetupHandler(this)) {
450 web_ui_->CallJavascriptFunction("OptionsPage.closeOverlay"); 432 web_ui_->CallJavascriptFunction("OptionsPage.closeOverlay");
451 service->get_wizard().Focus(); 433 service->get_wizard().Focus();
452 } 434 }
453 } 435 }
454 436
455 void SyncSetupHandler::HandleShowSetupUI(const ListValue* args) { 437 void SyncSetupHandler::HandleShowSetupUI(const ListValue* args) {
456 DCHECK(!flow_); 438 DCHECK(!flow_);
439 ShowSetupUI();
440 }
457 441
458 ProfileSyncService* service = 442 void SyncSetupHandler::CloseSyncSetup() {
459 web_ui_->GetProfile()->GetProfileSyncService(); 443 if (flow_) {
460 DCHECK(service); 444 flow_->OnDialogClosed(std::string());
445 flow_ = NULL;
446 }
447 }
461 448
462 // If the wizard is already visible, focus it. 449 void SyncSetupHandler::OpenSyncSetup() {
463 if (service->get_wizard().IsVisible()) { 450 DCHECK(web_ui_);
451 DCHECK(!flow_);
452
453 ProfileSyncService* service = web_ui_->GetProfile()->GetProfileSyncService();
454 if (!service) {
455 // If there's no sync service, the user tried to manually invoke a syncSetup
456 // URL, but sync features are disabled. We need to close the overlay for
457 // this (rare) case.
464 web_ui_->CallJavascriptFunction("OptionsPage.closeOverlay"); 458 web_ui_->CallJavascriptFunction("OptionsPage.closeOverlay");
465 service->get_wizard().Focus();
466 return; 459 return;
467 } 460 }
468 461
469 // The user is trying to manually load a syncSetup URL. We should bring up 462 // If the wizard is not visible, step into the appropriate UI state.
470 // either a login or a configure flow based on the state of sync. 463 if (!service->get_wizard().IsVisible())
471 if (service->HasSyncSetupCompleted()) 464 ShowSetupUI();
472 service->get_wizard().Step(SyncSetupWizard::CONFIGURE);
473 else
474 service->get_wizard().Step(SyncSetupWizard::GAIA_LOGIN);
475 465
476 // Show the Sync Setup page. 466 // The SyncSetupFlow will set itself as the |flow_|.
477 scoped_ptr<Value> page(Value::CreateStringValue("syncSetup")); 467 if (!service->get_wizard().AttachSyncSetupHandler(this)) {
478 web_ui_->CallJavascriptFunction("OptionsPage.navigateToPage", *page); 468 // If attach fails, a wizard is already activated and attached to a flow
469 // handler.
470 web_ui_->CallJavascriptFunction("OptionsPage.closeOverlay");
471 service->get_wizard().Focus();
472 }
479 } 473 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698