| OLD | NEW |
| 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/extensions_ui.h" | 5 #include "chrome/browser/extensions/extensions_ui.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/base64.h" | 9 #include "base/base64.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 if (ShouldShowExtension(*extension)) { | 235 if (ShouldShowExtension(*extension)) { |
| 236 extensions_list->Append(CreateExtensionDetailValue( | 236 extensions_list->Append(CreateExtensionDetailValue( |
| 237 extension_service_, | 237 extension_service_, |
| 238 *extension, | 238 *extension, |
| 239 empty_pages, // Terminated process has no active pages. | 239 empty_pages, // Terminated process has no active pages. |
| 240 false, true)); // enabled, terminated | 240 false, true)); // enabled, terminated |
| 241 } | 241 } |
| 242 } | 242 } |
| 243 results.Set("extensions", extensions_list); | 243 results.Set("extensions", extensions_list); |
| 244 | 244 |
| 245 bool developer_mode = web_ui_->GetProfile()->GetPrefs() | 245 Profile* profile = static_cast<Profile*>(web_ui_->tab_contents()->context()); |
| 246 bool developer_mode = profile->GetPrefs() |
| 246 ->GetBoolean(prefs::kExtensionsUIDeveloperMode); | 247 ->GetBoolean(prefs::kExtensionsUIDeveloperMode); |
| 247 results.SetBoolean("developerMode", developer_mode); | 248 results.SetBoolean("developerMode", developer_mode); |
| 248 | 249 |
| 249 web_ui_->CallJavascriptFunction("returnExtensionsData", results); | 250 web_ui_->CallJavascriptFunction("returnExtensionsData", results); |
| 250 } | 251 } |
| 251 | 252 |
| 252 void ExtensionsDOMHandler::RegisterForNotifications() { | 253 void ExtensionsDOMHandler::RegisterForNotifications() { |
| 253 // Register for notifications that we need to reload the page. | 254 // Register for notifications that we need to reload the page. |
| 254 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, | 255 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, |
| 255 NotificationService::AllSources()); | 256 NotificationService::AllSources()); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 274 registrar_.Add(this, | 275 registrar_.Add(this, |
| 275 chrome::NOTIFICATION_BACKGROUND_CONTENTS_DELETED, | 276 chrome::NOTIFICATION_BACKGROUND_CONTENTS_DELETED, |
| 276 NotificationService::AllSources()); | 277 NotificationService::AllSources()); |
| 277 registrar_.Add(this, | 278 registrar_.Add(this, |
| 278 chrome::NOTIFICATION_EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED, | 279 chrome::NOTIFICATION_EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED, |
| 279 NotificationService::AllSources()); | 280 NotificationService::AllSources()); |
| 280 } | 281 } |
| 281 | 282 |
| 282 ExtensionUninstallDialog* ExtensionsDOMHandler::GetExtensionUninstallDialog() { | 283 ExtensionUninstallDialog* ExtensionsDOMHandler::GetExtensionUninstallDialog() { |
| 283 if (!extension_uninstall_dialog_.get()) { | 284 if (!extension_uninstall_dialog_.get()) { |
| 285 Profile* profile = |
| 286 static_cast<Profile*>(web_ui_->tab_contents()->context()); |
| 284 extension_uninstall_dialog_.reset( | 287 extension_uninstall_dialog_.reset( |
| 285 new ExtensionUninstallDialog(web_ui_->GetProfile())); | 288 new ExtensionUninstallDialog(profile)); |
| 286 } | 289 } |
| 287 return extension_uninstall_dialog_.get(); | 290 return extension_uninstall_dialog_.get(); |
| 288 } | 291 } |
| 289 | 292 |
| 290 void ExtensionsDOMHandler::HandleToggleDeveloperMode(const ListValue* args) { | 293 void ExtensionsDOMHandler::HandleToggleDeveloperMode(const ListValue* args) { |
| 291 bool developer_mode = web_ui_->GetProfile()->GetPrefs() | 294 Profile* profile = static_cast<Profile*>(web_ui_->tab_contents()->context()); |
| 295 bool developer_mode = profile->GetPrefs() |
| 292 ->GetBoolean(prefs::kExtensionsUIDeveloperMode); | 296 ->GetBoolean(prefs::kExtensionsUIDeveloperMode); |
| 293 web_ui_->GetProfile()->GetPrefs()->SetBoolean( | 297 profile->GetPrefs()->SetBoolean( |
| 294 prefs::kExtensionsUIDeveloperMode, !developer_mode); | 298 prefs::kExtensionsUIDeveloperMode, !developer_mode); |
| 295 } | 299 } |
| 296 | 300 |
| 297 void ExtensionsDOMHandler::HandleInspectMessage(const ListValue* args) { | 301 void ExtensionsDOMHandler::HandleInspectMessage(const ListValue* args) { |
| 298 std::string render_process_id_str; | 302 std::string render_process_id_str; |
| 299 std::string render_view_id_str; | 303 std::string render_view_id_str; |
| 300 int render_process_id; | 304 int render_process_id; |
| 301 int render_view_id; | 305 int render_view_id; |
| 302 CHECK(args->GetSize() == 2); | 306 CHECK(args->GetSize() == 2); |
| 303 CHECK(args->GetString(0, &render_process_id_str)); | 307 CHECK(args->GetString(0, &render_process_id_str)); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 330 DCHECK(extension); | 334 DCHECK(extension); |
| 331 if (!Extension::UserMayDisable(extension->location())) { | 335 if (!Extension::UserMayDisable(extension->location())) { |
| 332 LOG(ERROR) << "Attempt to enable an extension that is non-usermanagable was" | 336 LOG(ERROR) << "Attempt to enable an extension that is non-usermanagable was" |
| 333 << "made. Extension id: " << extension->id(); | 337 << "made. Extension id: " << extension->id(); |
| 334 return; | 338 return; |
| 335 } | 339 } |
| 336 | 340 |
| 337 if (enable_str == "true") { | 341 if (enable_str == "true") { |
| 338 ExtensionPrefs* prefs = extension_service_->extension_prefs(); | 342 ExtensionPrefs* prefs = extension_service_->extension_prefs(); |
| 339 if (prefs->DidExtensionEscalatePermissions(extension_id)) { | 343 if (prefs->DidExtensionEscalatePermissions(extension_id)) { |
| 344 Profile* profile = |
| 345 static_cast<Profile*>(web_ui_->tab_contents()->context()); |
| 340 ShowExtensionDisabledDialog(extension_service_, | 346 ShowExtensionDisabledDialog(extension_service_, |
| 341 web_ui_->GetProfile(), extension); | 347 profile, extension); |
| 342 } else { | 348 } else { |
| 343 extension_service_->EnableExtension(extension_id); | 349 extension_service_->EnableExtension(extension_id); |
| 344 } | 350 } |
| 345 } else { | 351 } else { |
| 346 extension_service_->DisableExtension(extension_id); | 352 extension_service_->DisableExtension(extension_id); |
| 347 } | 353 } |
| 348 } | 354 } |
| 349 | 355 |
| 350 void ExtensionsDOMHandler::HandleEnableIncognitoMessage(const ListValue* args) { | 356 void ExtensionsDOMHandler::HandleEnableIncognitoMessage(const ListValue* args) { |
| 351 CHECK(args->GetSize() == 2); | 357 CHECK(args->GetSize() == 2); |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 443 } | 449 } |
| 444 | 450 |
| 445 void ExtensionsDOMHandler::ExtensionDialogCanceled() { | 451 void ExtensionsDOMHandler::ExtensionDialogCanceled() { |
| 446 extension_id_prompting_ = ""; | 452 extension_id_prompting_ = ""; |
| 447 } | 453 } |
| 448 | 454 |
| 449 void ExtensionsDOMHandler::HandleOptionsMessage(const ListValue* args) { | 455 void ExtensionsDOMHandler::HandleOptionsMessage(const ListValue* args) { |
| 450 const Extension* extension = GetExtension(args); | 456 const Extension* extension = GetExtension(args); |
| 451 if (!extension || extension->options_url().is_empty()) | 457 if (!extension || extension->options_url().is_empty()) |
| 452 return; | 458 return; |
| 453 web_ui_->GetProfile()->GetExtensionProcessManager()->OpenOptionsPage( | 459 Profile* profile = static_cast<Profile*>(web_ui_->tab_contents()->context()); |
| 454 extension, NULL); | 460 profile->GetExtensionProcessManager()->OpenOptionsPage(extension, NULL); |
| 455 } | 461 } |
| 456 | 462 |
| 457 void ExtensionsDOMHandler::HandleShowButtonMessage(const ListValue* args) { | 463 void ExtensionsDOMHandler::HandleShowButtonMessage(const ListValue* args) { |
| 458 const Extension* extension = GetExtension(args); | 464 const Extension* extension = GetExtension(args); |
| 459 extension_service_->SetBrowserActionVisibility(extension, true); | 465 extension_service_->SetBrowserActionVisibility(extension, true); |
| 460 } | 466 } |
| 461 | 467 |
| 462 void ExtensionsDOMHandler::HandleLoadMessage(const ListValue* args) { | 468 void ExtensionsDOMHandler::HandleLoadMessage(const ListValue* args) { |
| 463 FilePath::StringType string_path; | 469 FilePath::StringType string_path; |
| 464 CHECK(args->GetSize() == 1) << args->GetSize(); | 470 CHECK(args->GetSize() == 1) << args->GetSize(); |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 751 | 757 |
| 752 GURL url = host->delegate()->GetURL(); | 758 GURL url = host->delegate()->GetURL(); |
| 753 if (url.SchemeIs(chrome::kExtensionScheme)) { | 759 if (url.SchemeIs(chrome::kExtensionScheme)) { |
| 754 if (url.host() != extension->id()) | 760 if (url.host() != extension->id()) |
| 755 continue; | 761 continue; |
| 756 } else if (!extension->web_extent().MatchesURL(url)) { | 762 } else if (!extension->web_extent().MatchesURL(url)) { |
| 757 continue; | 763 continue; |
| 758 } | 764 } |
| 759 | 765 |
| 760 result->push_back(ExtensionPage(url, process->id(), host->routing_id(), | 766 result->push_back(ExtensionPage(url, process->id(), host->routing_id(), |
| 761 process->profile()->IsOffTheRecord())); | 767 process->context()->IsOffTheRecord())); |
| 762 } | 768 } |
| 763 } | 769 } |
| 764 | 770 |
| 765 ExtensionsDOMHandler::~ExtensionsDOMHandler() { | 771 ExtensionsDOMHandler::~ExtensionsDOMHandler() { |
| 766 // There may be pending file dialogs, we need to tell them that we've gone | 772 // There may be pending file dialogs, we need to tell them that we've gone |
| 767 // away so they don't try and call back to us. | 773 // away so they don't try and call back to us. |
| 768 if (load_extension_dialog_.get()) | 774 if (load_extension_dialog_.get()) |
| 769 load_extension_dialog_->ListenerDestroyed(); | 775 load_extension_dialog_->ListenerDestroyed(); |
| 770 | 776 |
| 771 if (pack_job_.get()) | 777 if (pack_job_.get()) |
| 772 pack_job_->ClearClient(); | 778 pack_job_->ClearClient(); |
| 773 | 779 |
| 774 registrar_.RemoveAll(); | 780 registrar_.RemoveAll(); |
| 775 } | 781 } |
| 776 | 782 |
| 777 // ExtensionsDOMHandler, public: ----------------------------------------------- | 783 // ExtensionsDOMHandler, public: ----------------------------------------------- |
| 778 | 784 |
| 779 ExtensionsUI::ExtensionsUI(TabContents* contents) : ChromeWebUI(contents) { | 785 ExtensionsUI::ExtensionsUI(TabContents* contents) : ChromeWebUI(contents) { |
| 780 ExtensionService *exstension_service = | 786 Profile* profile = static_cast<Profile*>(contents->context()); |
| 781 GetProfile()->GetOriginalProfile()->GetExtensionService(); | 787 ExtensionService *extension_service = |
| 788 profile->GetOriginalProfile()->GetExtensionService(); |
| 782 | 789 |
| 783 ExtensionsDOMHandler* handler = new ExtensionsDOMHandler(exstension_service); | 790 ExtensionsDOMHandler* handler = new ExtensionsDOMHandler(extension_service); |
| 784 AddMessageHandler(handler); | 791 AddMessageHandler(handler); |
| 785 handler->Attach(this); | 792 handler->Attach(this); |
| 786 | 793 |
| 787 // Set up the chrome://extensions/ source. | 794 // Set up the chrome://extensions/ source. |
| 788 contents->profile()->GetChromeURLDataManager()->AddDataSource( | 795 profile->GetChromeURLDataManager()->AddDataSource( |
| 789 CreateExtensionsUIHTMLSource()); | 796 CreateExtensionsUIHTMLSource()); |
| 790 } | 797 } |
| 791 | 798 |
| 792 // static | 799 // static |
| 793 RefCountedMemory* ExtensionsUI::GetFaviconResourceBytes() { | 800 RefCountedMemory* ExtensionsUI::GetFaviconResourceBytes() { |
| 794 return ResourceBundle::GetSharedInstance(). | 801 return ResourceBundle::GetSharedInstance(). |
| 795 LoadDataResourceBytes(IDR_PLUGIN); | 802 LoadDataResourceBytes(IDR_PLUGIN); |
| 796 } | 803 } |
| 797 | 804 |
| 798 // static | 805 // static |
| 799 void ExtensionsUI::RegisterUserPrefs(PrefService* prefs) { | 806 void ExtensionsUI::RegisterUserPrefs(PrefService* prefs) { |
| 800 prefs->RegisterBooleanPref(prefs::kExtensionsUIDeveloperMode, | 807 prefs->RegisterBooleanPref(prefs::kExtensionsUIDeveloperMode, |
| 801 false, | 808 false, |
| 802 PrefService::SYNCABLE_PREF); | 809 PrefService::SYNCABLE_PREF); |
| 803 } | 810 } |
| OLD | NEW |