OLD | NEW |
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/extensions_ui.h" | 5 #include "chrome/browser/extensions/extensions_ui.h" |
6 | 6 |
7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
8 #include "app/resource_bundle.h" | 8 #include "app/resource_bundle.h" |
9 #include "base/base64.h" | 9 #include "base/base64.h" |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
11 #include "base/file_util.h" | 11 #include "base/file_util.h" |
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
365 std::map<int, std::string>::const_iterator iter = | 365 std::map<int, std::string>::const_iterator iter = |
366 icons.find(Extension::EXTENSION_ICON_MEDIUM); | 366 icons.find(Extension::EXTENSION_ICON_MEDIUM); |
367 if (iter == icons.end()) | 367 if (iter == icons.end()) |
368 iter = icons.find(Extension::EXTENSION_ICON_LARGE); | 368 iter = icons.find(Extension::EXTENSION_ICON_LARGE); |
369 if (iter != icons.end()) | 369 if (iter != icons.end()) |
370 return extension->GetResource(iter->second); | 370 return extension->GetResource(iter->second); |
371 else | 371 else |
372 return ExtensionResource(); | 372 return ExtensionResource(); |
373 } | 373 } |
374 | 374 |
| 375 ExtensionInstallUI* ExtensionsDOMHandler::GetExtensionInstallUI() { |
| 376 if (!install_ui_.get()) |
| 377 install_ui_.reset(new ExtensionInstallUI(dom_ui_->GetProfile())); |
| 378 return install_ui_.get(); |
| 379 } |
| 380 |
375 void ExtensionsDOMHandler::HandleToggleDeveloperMode(const Value* value) { | 381 void ExtensionsDOMHandler::HandleToggleDeveloperMode(const Value* value) { |
376 bool developer_mode = dom_ui_->GetProfile()->GetPrefs() | 382 bool developer_mode = dom_ui_->GetProfile()->GetPrefs() |
377 ->GetBoolean(prefs::kExtensionsUIDeveloperMode); | 383 ->GetBoolean(prefs::kExtensionsUIDeveloperMode); |
378 dom_ui_->GetProfile()->GetPrefs()->SetBoolean( | 384 dom_ui_->GetProfile()->GetPrefs()->SetBoolean( |
379 prefs::kExtensionsUIDeveloperMode, !developer_mode); | 385 prefs::kExtensionsUIDeveloperMode, !developer_mode); |
380 } | 386 } |
381 | 387 |
382 void ExtensionsDOMHandler::HandleInspectMessage(const Value* value) { | 388 void ExtensionsDOMHandler::HandleInspectMessage(const Value* value) { |
383 std::string render_process_id_str; | 389 std::string render_process_id_str; |
384 std::string render_view_id_str; | 390 std::string render_view_id_str; |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
441 CHECK(list->GetString(1, &enable_str)); | 447 CHECK(list->GetString(1, &enable_str)); |
442 Extension* extension = extensions_service_->GetExtensionById(extension_id, | 448 Extension* extension = extensions_service_->GetExtensionById(extension_id, |
443 true); | 449 true); |
444 DCHECK(extension); | 450 DCHECK(extension); |
445 | 451 |
446 if (enable_str == "true") { | 452 if (enable_str == "true") { |
447 if (!extension_id_prompting_.empty()) | 453 if (!extension_id_prompting_.empty()) |
448 return; // only one prompt at a time | 454 return; // only one prompt at a time |
449 | 455 |
450 // Prompt the user first. | 456 // Prompt the user first. |
451 scoped_ptr<SkBitmap> icon; | |
452 Extension::DecodeIcon(extension, Extension::EXTENSION_ICON_LARGE, &icon); | |
453 | |
454 ui_prompt_type_ = ExtensionInstallUI::ENABLE_INCOGNITO_PROMPT; | 457 ui_prompt_type_ = ExtensionInstallUI::ENABLE_INCOGNITO_PROMPT; |
455 extension_id_prompting_ = extension_id; | 458 extension_id_prompting_ = extension_id; |
456 ExtensionInstallUI client(dom_ui_->GetProfile()); | 459 |
457 client.ConfirmEnableIncognito(this, extension, icon.get()); | 460 GetExtensionInstallUI()->ConfirmEnableIncognito(this, extension); |
458 } else { | 461 } else { |
459 extensions_service_->SetIsIncognitoEnabled(extension, false); | 462 extensions_service_->SetIsIncognitoEnabled(extension, false); |
460 } | 463 } |
461 } | 464 } |
462 | 465 |
463 void ExtensionsDOMHandler::HandleUninstallMessage(const Value* value) { | 466 void ExtensionsDOMHandler::HandleUninstallMessage(const Value* value) { |
464 CHECK(value->IsType(Value::TYPE_LIST)); | 467 CHECK(value->IsType(Value::TYPE_LIST)); |
465 const ListValue* list = static_cast<const ListValue*>(value); | 468 const ListValue* list = static_cast<const ListValue*>(value); |
466 CHECK(list->GetSize() == 1); | 469 CHECK(list->GetSize() == 1); |
467 std::string extension_id; | 470 std::string extension_id; |
468 CHECK(list->GetString(0, &extension_id)); | 471 CHECK(list->GetString(0, &extension_id)); |
469 | 472 |
470 Extension *extension = | 473 Extension *extension = |
471 extensions_service_->GetExtensionById(extension_id, true); | 474 extensions_service_->GetExtensionById(extension_id, true); |
472 if (!extension) | 475 if (!extension) |
473 return; | 476 return; |
474 | 477 |
475 if (!extension_id_prompting_.empty()) | 478 if (!extension_id_prompting_.empty()) |
476 return; // only one prompt at a time | 479 return; // only one prompt at a time |
477 | 480 |
478 scoped_ptr<SkBitmap> uninstall_icon; | |
479 Extension::DecodeIcon(extension, Extension::EXTENSION_ICON_LARGE, | |
480 &uninstall_icon); | |
481 | |
482 ui_prompt_type_ = ExtensionInstallUI::UNINSTALL_PROMPT; | 481 ui_prompt_type_ = ExtensionInstallUI::UNINSTALL_PROMPT; |
483 extension_id_prompting_ = extension_id; | 482 extension_id_prompting_ = extension_id; |
484 ExtensionInstallUI client(dom_ui_->GetProfile()); | 483 |
485 client.ConfirmUninstall(this, extension, uninstall_icon.get()); | 484 GetExtensionInstallUI()->ConfirmUninstall(this, extension); |
486 } | 485 } |
487 | 486 |
488 void ExtensionsDOMHandler::InstallUIProceed(bool create_app_shortcut) { | 487 void ExtensionsDOMHandler::InstallUIProceed(bool create_app_shortcut) { |
489 // We only ever use ExtensionInstallUI for uninstalling, which should never | 488 // We only ever use ExtensionInstallUI for uninstalling, which should never |
490 // result in it telling us to create a shortcut. | 489 // result in it telling us to create a shortcut. |
491 DCHECK(!create_app_shortcut); | 490 DCHECK(!create_app_shortcut); |
492 | 491 |
493 // The extension can be uninstalled in another window while the UI was | 492 // The extension can be uninstalled in another window while the UI was |
494 // showing. Do nothing in that case. | 493 // showing. Do nothing in that case. |
495 Extension* extension = | 494 Extension* extension = |
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
853 // static | 852 // static |
854 RefCountedMemory* ExtensionsUI::GetFaviconResourceBytes() { | 853 RefCountedMemory* ExtensionsUI::GetFaviconResourceBytes() { |
855 return ResourceBundle::GetSharedInstance(). | 854 return ResourceBundle::GetSharedInstance(). |
856 LoadDataResourceBytes(IDR_PLUGIN); | 855 LoadDataResourceBytes(IDR_PLUGIN); |
857 } | 856 } |
858 | 857 |
859 // static | 858 // static |
860 void ExtensionsUI::RegisterUserPrefs(PrefService* prefs) { | 859 void ExtensionsUI::RegisterUserPrefs(PrefService* prefs) { |
861 prefs->RegisterBooleanPref(prefs::kExtensionsUIDeveloperMode, false); | 860 prefs->RegisterBooleanPref(prefs::kExtensionsUIDeveloperMode, false); |
862 } | 861 } |
OLD | NEW |