OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/extensions/extension_settings_handler.h" | 5 #include "chrome/browser/ui/webui/extensions/extension_settings_handler.h" |
6 | 6 |
7 #include "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
8 #include "base/base64.h" | 8 #include "base/base64.h" |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
338 source->AddString("extensionSettingsCrashMessage", | 338 source->AddString("extensionSettingsCrashMessage", |
339 l10n_util::GetStringUTF16(IDS_EXTENSIONS_CRASHED_EXTENSION)); | 339 l10n_util::GetStringUTF16(IDS_EXTENSIONS_CRASHED_EXTENSION)); |
340 source->AddString("extensionSettingsInDevelopment", | 340 source->AddString("extensionSettingsInDevelopment", |
341 l10n_util::GetStringUTF16(IDS_EXTENSIONS_IN_DEVELOPMENT)); | 341 l10n_util::GetStringUTF16(IDS_EXTENSIONS_IN_DEVELOPMENT)); |
342 source->AddString("extensionSettingsWarningsTitle", | 342 source->AddString("extensionSettingsWarningsTitle", |
343 l10n_util::GetStringUTF16(IDS_EXTENSION_WARNINGS_TITLE)); | 343 l10n_util::GetStringUTF16(IDS_EXTENSION_WARNINGS_TITLE)); |
344 source->AddString("extensionSettingsShowDetails", | 344 source->AddString("extensionSettingsShowDetails", |
345 l10n_util::GetStringUTF16(IDS_EXTENSIONS_SHOW_DETAILS)); | 345 l10n_util::GetStringUTF16(IDS_EXTENSIONS_SHOW_DETAILS)); |
346 source->AddString("extensionSettingsHideDetails", | 346 source->AddString("extensionSettingsHideDetails", |
347 l10n_util::GetStringUTF16(IDS_EXTENSIONS_HIDE_DETAILS)); | 347 l10n_util::GetStringUTF16(IDS_EXTENSIONS_HIDE_DETAILS)); |
| 348 source->AddString("unlockButton", |
| 349 l10n_util::GetStringUTF16(IDS_EXTENSIONS_UNLOCK_BUTTON)); |
| 350 source->AddString("lockButton", |
| 351 l10n_util::GetStringUTF16(IDS_EXTENSIONS_LOCK_BUTTON)); |
348 | 352 |
349 // TODO(estade): comb through the above strings to find ones no longer used in | 353 // TODO(estade): comb through the above strings to find ones no longer used in |
350 // uber extensions. | 354 // uber extensions. |
351 source->AddString("extensionUninstall", | 355 source->AddString("extensionUninstall", |
352 l10n_util::GetStringUTF16(IDS_EXTENSIONS_UNINSTALL)); | 356 l10n_util::GetStringUTF16(IDS_EXTENSIONS_UNINSTALL)); |
353 } | 357 } |
354 | 358 |
355 void ExtensionSettingsHandler::NavigateToPendingEntry(const GURL& url, | 359 void ExtensionSettingsHandler::NavigateToPendingEntry(const GURL& url, |
356 content::NavigationController::ReloadType reload_type) { | 360 content::NavigationController::ReloadType reload_type) { |
357 if (reload_type != content::NavigationController::NO_RELOAD) | 361 if (reload_type != content::NavigationController::NO_RELOAD) |
358 ReloadUnpackedExtensions(); | 362 ReloadUnpackedExtensions(); |
359 } | 363 } |
360 | 364 |
361 void ExtensionSettingsHandler::RegisterMessages() { | 365 void ExtensionSettingsHandler::RegisterMessages() { |
362 // Don't override an |extension_service_| or |management_policy_| injected | 366 // Don't override an |extension_service_| or |management_policy_| injected |
363 // for testing. | 367 // for testing. |
364 if (!extension_service_) { | 368 if (!extension_service_) { |
365 extension_service_ = Profile::FromWebUI(web_ui())->GetOriginalProfile()-> | 369 extension_service_ = Profile::FromWebUI(web_ui())->GetOriginalProfile()-> |
366 GetExtensionService(); | 370 GetExtensionService(); |
367 } | 371 } |
368 if (!management_policy_) { | 372 if (!management_policy_) { |
369 management_policy_ = extensions::ExtensionSystem::Get( | 373 management_policy_ = extensions::ExtensionSystem::Get( |
370 extension_service_->profile())->management_policy(); | 374 extension_service_->profile())->management_policy(); |
371 } | 375 } |
372 | 376 |
| 377 web_ui()->RegisterMessageCallback("authenticate", |
| 378 base::Bind(&ExtensionSettingsHandler::DoAuthenticate, |
| 379 base::Unretained(this))); |
| 380 web_ui()->RegisterMessageCallback("endAuthentication", |
| 381 base::Bind(&ExtensionSettingsHandler::EndAuthentication, |
| 382 base::Unretained(this))); |
373 web_ui()->RegisterMessageCallback("extensionSettingsRequestExtensionsData", | 383 web_ui()->RegisterMessageCallback("extensionSettingsRequestExtensionsData", |
374 base::Bind(&ExtensionSettingsHandler::HandleRequestExtensionsData, | 384 base::Bind(&ExtensionSettingsHandler::HandleRequestExtensionsData, |
375 base::Unretained(this))); | 385 base::Unretained(this))); |
376 web_ui()->RegisterMessageCallback("extensionSettingsToggleDeveloperMode", | 386 web_ui()->RegisterMessageCallback("extensionSettingsToggleDeveloperMode", |
377 base::Bind(&ExtensionSettingsHandler::HandleToggleDeveloperMode, | 387 base::Bind(&ExtensionSettingsHandler::HandleToggleDeveloperMode, |
378 base::Unretained(this))); | 388 base::Unretained(this))); |
379 web_ui()->RegisterMessageCallback("extensionSettingsInspect", | 389 web_ui()->RegisterMessageCallback("extensionSettingsInspect", |
380 base::Bind(&ExtensionSettingsHandler::HandleInspectMessage, | 390 base::Bind(&ExtensionSettingsHandler::HandleInspectMessage, |
381 base::Unretained(this))); | 391 base::Unretained(this))); |
382 web_ui()->RegisterMessageCallback("extensionSettingsLaunch", | 392 web_ui()->RegisterMessageCallback("extensionSettingsLaunch", |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
530 if ((*extension)->location() == Manifest::LOAD) | 540 if ((*extension)->location() == Manifest::LOAD) |
531 unpacked_extensions.push_back(*extension); | 541 unpacked_extensions.push_back(*extension); |
532 } | 542 } |
533 | 543 |
534 for (std::vector<const Extension*>::iterator iter = | 544 for (std::vector<const Extension*>::iterator iter = |
535 unpacked_extensions.begin(); iter != unpacked_extensions.end(); ++iter) { | 545 unpacked_extensions.begin(); iter != unpacked_extensions.end(); ++iter) { |
536 extension_service_->ReloadExtension((*iter)->id()); | 546 extension_service_->ReloadExtension((*iter)->id()); |
537 } | 547 } |
538 } | 548 } |
539 | 549 |
| 550 void ExtensionSettingsHandler::DoAuthenticate(const ListValue* args) { |
| 551 ManagedUserService* service = ManagedUserServiceFactory::GetForProfile( |
| 552 Profile::FromWebUI(web_ui())); |
| 553 // TODO(akuegel): Show the managed user passphrase dialog for authentication. |
| 554 service->SetElevated(true); |
| 555 HandleRequestExtensionsData(NULL); |
| 556 } |
| 557 |
| 558 void ExtensionSettingsHandler::EndAuthentication(const ListValue* args) { |
| 559 ManagedUserService* service = ManagedUserServiceFactory::GetForProfile( |
| 560 Profile::FromWebUI(web_ui())); |
| 561 service->SetElevated(false); |
| 562 HandleRequestExtensionsData(NULL); |
| 563 } |
| 564 |
540 void ExtensionSettingsHandler::HandleRequestExtensionsData( | 565 void ExtensionSettingsHandler::HandleRequestExtensionsData( |
541 const ListValue* args) { | 566 const ListValue* args) { |
542 DictionaryValue results; | 567 DictionaryValue results; |
543 | 568 |
544 Profile* profile = Profile::FromWebUI(web_ui()); | 569 Profile* profile = Profile::FromWebUI(web_ui()); |
545 | 570 |
546 // Add the extensions to the results structure. | 571 // Add the extensions to the results structure. |
547 ListValue *extensions_list = new ListValue(); | 572 ListValue *extensions_list = new ListValue(); |
548 | 573 |
549 extensions::ExtensionWarningService* warnings = | 574 extensions::ExtensionWarningService* warnings = |
(...skipping 25 matching lines...) Expand all Loading... |
575 extension != extensions->end(); ++extension) { | 600 extension != extensions->end(); ++extension) { |
576 if ((*extension)->ShouldDisplayInExtensionSettings()) { | 601 if ((*extension)->ShouldDisplayInExtensionSettings()) { |
577 extensions_list->Append(CreateExtensionDetailValue( | 602 extensions_list->Append(CreateExtensionDetailValue( |
578 *extension, | 603 *extension, |
579 empty_pages, // Terminated process has no active pages. | 604 empty_pages, // Terminated process has no active pages. |
580 warnings)); | 605 warnings)); |
581 } | 606 } |
582 } | 607 } |
583 results.Set("extensions", extensions_list); | 608 results.Set("extensions", extensions_list); |
584 | 609 |
585 bool is_managed = | 610 ManagedUserService* service = |
586 ManagedUserServiceFactory::GetForProfile(profile)->ProfileIsManaged(); | 611 ManagedUserServiceFactory::GetForProfile(profile); |
| 612 |
| 613 bool is_managed = service->ProfileIsManaged(); |
| 614 bool is_elevated = service->IsElevated(); |
587 bool developer_mode = | 615 bool developer_mode = |
588 !is_managed && | 616 (!is_managed || is_elevated) && |
589 profile->GetPrefs()->GetBoolean(prefs::kExtensionsUIDeveloperMode); | 617 profile->GetPrefs()->GetBoolean(prefs::kExtensionsUIDeveloperMode); |
590 results.SetBoolean("profileIsManaged", is_managed); | 618 results.SetBoolean("profileIsManaged", is_managed); |
| 619 results.SetBoolean("profileIsElevated", service->IsElevated()); |
591 results.SetBoolean("developerMode", developer_mode); | 620 results.SetBoolean("developerMode", developer_mode); |
592 | 621 |
593 // Check to see if we have any wiped out extensions. | 622 // Check to see if we have any wiped out extensions. |
594 ExtensionService* extension_service = | 623 ExtensionService* extension_service = |
595 extensions::ExtensionSystem::Get(profile)->extension_service(); | 624 extensions::ExtensionSystem::Get(profile)->extension_service(); |
596 scoped_ptr<const ExtensionSet> wiped_out( | 625 scoped_ptr<const ExtensionSet> wiped_out( |
597 extension_service->GetWipedOutExtensions()); | 626 extension_service->GetWipedOutExtensions()); |
598 results.SetBoolean("showDisabledExtensionsWarning", wiped_out->size() > 0); | 627 results.SetBoolean("showDisabledExtensionsWarning", wiped_out->size() > 0); |
599 | 628 |
600 bool load_unpacked_disabled = | 629 bool load_unpacked_disabled = |
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1034 std::vector<std::string> requirement_errors) { | 1063 std::vector<std::string> requirement_errors) { |
1035 if (requirement_errors.empty()) { | 1064 if (requirement_errors.empty()) { |
1036 extension_service_->EnableExtension(extension_id); | 1065 extension_service_->EnableExtension(extension_id); |
1037 } else { | 1066 } else { |
1038 ExtensionErrorReporter::GetInstance()->ReportError( | 1067 ExtensionErrorReporter::GetInstance()->ReportError( |
1039 UTF8ToUTF16(JoinString(requirement_errors, ' ')), | 1068 UTF8ToUTF16(JoinString(requirement_errors, ' ')), |
1040 true /* be noisy */); | 1069 true /* be noisy */); |
1041 } | 1070 } |
1042 requirements_checker_.reset(); | 1071 requirements_checker_.reset(); |
1043 } | 1072 } |
OLD | NEW |