| 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/ui/webui/options/extension_settings_handler.h" | 5 #include "chrome/browser/ui/webui/options/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/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/string_number_conversions.h" | 10 #include "base/string_number_conversions.h" |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 203 NotificationService::AllSources()); | 203 NotificationService::AllSources()); |
| 204 registrar_.Add(this, | 204 registrar_.Add(this, |
| 205 chrome::NOTIFICATION_EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED, | 205 chrome::NOTIFICATION_EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED, |
| 206 NotificationService::AllSources()); | 206 NotificationService::AllSources()); |
| 207 } | 207 } |
| 208 | 208 |
| 209 ExtensionUninstallDialog* | 209 ExtensionUninstallDialog* |
| 210 ExtensionSettingsHandler::GetExtensionUninstallDialog() { | 210 ExtensionSettingsHandler::GetExtensionUninstallDialog() { |
| 211 if (!extension_uninstall_dialog_.get()) { | 211 if (!extension_uninstall_dialog_.get()) { |
| 212 extension_uninstall_dialog_.reset( | 212 extension_uninstall_dialog_.reset( |
| 213 new ExtensionUninstallDialog(Profile::FromWebUI(web_ui_))); | 213 ExtensionUninstallDialog::Create(Profile::FromWebUI(web_ui_), this)); |
| 214 } | 214 } |
| 215 return extension_uninstall_dialog_.get(); | 215 return extension_uninstall_dialog_.get(); |
| 216 } | 216 } |
| 217 | 217 |
| 218 void ExtensionSettingsHandler::HandleToggleDeveloperMode( | 218 void ExtensionSettingsHandler::HandleToggleDeveloperMode( |
| 219 const ListValue* args) { | 219 const ListValue* args) { |
| 220 Profile* profile = Profile::FromWebUI(web_ui_); | 220 Profile* profile = Profile::FromWebUI(web_ui_); |
| 221 bool developer_mode = | 221 bool developer_mode = |
| 222 profile->GetPrefs()->GetBoolean(prefs::kExtensionsUIDeveloperMode); | 222 profile->GetPrefs()->GetBoolean(prefs::kExtensionsUIDeveloperMode); |
| 223 profile->GetPrefs()->SetBoolean( | 223 profile->GetPrefs()->SetBoolean( |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 338 LOG(ERROR) << "Attempt to uninstall an extension that is non-usermanagable " | 338 LOG(ERROR) << "Attempt to uninstall an extension that is non-usermanagable " |
| 339 << "was made. Extension id : " << extension->id(); | 339 << "was made. Extension id : " << extension->id(); |
| 340 return; | 340 return; |
| 341 } | 341 } |
| 342 | 342 |
| 343 if (!extension_id_prompting_.empty()) | 343 if (!extension_id_prompting_.empty()) |
| 344 return; // Only one prompt at a time. | 344 return; // Only one prompt at a time. |
| 345 | 345 |
| 346 extension_id_prompting_ = extension_id; | 346 extension_id_prompting_ = extension_id; |
| 347 | 347 |
| 348 GetExtensionUninstallDialog()->ConfirmUninstall(this, extension); | 348 GetExtensionUninstallDialog()->ConfirmUninstall(extension); |
| 349 } | 349 } |
| 350 | 350 |
| 351 void ExtensionSettingsHandler::ExtensionDialogAccepted() { | 351 void ExtensionSettingsHandler::ExtensionUninstallAccepted() { |
| 352 DCHECK(!extension_id_prompting_.empty()); | 352 DCHECK(!extension_id_prompting_.empty()); |
| 353 | 353 |
| 354 bool was_terminated = false; | 354 bool was_terminated = false; |
| 355 | 355 |
| 356 // The extension can be uninstalled in another window while the UI was | 356 // The extension can be uninstalled in another window while the UI was |
| 357 // showing. Do nothing in that case. | 357 // showing. Do nothing in that case. |
| 358 const Extension* extension = | 358 const Extension* extension = |
| 359 extension_service_->GetExtensionById(extension_id_prompting_, true); | 359 extension_service_->GetExtensionById(extension_id_prompting_, true); |
| 360 if (!extension) { | 360 if (!extension) { |
| 361 extension = extension_service_->GetTerminatedExtension( | 361 extension = extension_service_->GetTerminatedExtension( |
| 362 extension_id_prompting_); | 362 extension_id_prompting_); |
| 363 was_terminated = true; | 363 was_terminated = true; |
| 364 } | 364 } |
| 365 if (!extension) | 365 if (!extension) |
| 366 return; | 366 return; |
| 367 | 367 |
| 368 extension_service_->UninstallExtension(extension_id_prompting_, | 368 extension_service_->UninstallExtension(extension_id_prompting_, |
| 369 false, // External uninstall. | 369 false, // External uninstall. |
| 370 NULL); // Error. | 370 NULL); // Error. |
| 371 extension_id_prompting_ = ""; | 371 extension_id_prompting_ = ""; |
| 372 | 372 |
| 373 // There will be no EXTENSION_UNLOADED notification for terminated | 373 // There will be no EXTENSION_UNLOADED notification for terminated |
| 374 // extensions as they were already unloaded. | 374 // extensions as they were already unloaded. |
| 375 if (was_terminated) | 375 if (was_terminated) |
| 376 HandleRequestExtensionsData(NULL); | 376 HandleRequestExtensionsData(NULL); |
| 377 } | 377 } |
| 378 | 378 |
| 379 void ExtensionSettingsHandler::ExtensionDialogCanceled() { | 379 void ExtensionSettingsHandler::ExtensionUninstallCanceled() { |
| 380 extension_id_prompting_ = ""; | 380 extension_id_prompting_ = ""; |
| 381 } | 381 } |
| 382 | 382 |
| 383 void ExtensionSettingsHandler::HandleOptionsMessage(const ListValue* args) { | 383 void ExtensionSettingsHandler::HandleOptionsMessage(const ListValue* args) { |
| 384 const Extension* extension = GetExtension(args); | 384 const Extension* extension = GetExtension(args); |
| 385 if (!extension || extension->options_url().is_empty()) | 385 if (!extension || extension->options_url().is_empty()) |
| 386 return; | 386 return; |
| 387 Profile::FromWebUI(web_ui_)->GetExtensionProcessManager()->OpenOptionsPage( | 387 Profile::FromWebUI(web_ui_)->GetExtensionProcessManager()->OpenOptionsPage( |
| 388 extension, NULL); | 388 extension, NULL); |
| 389 } | 389 } |
| (...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 724 continue; | 724 continue; |
| 725 } else if (!extension->web_extent().MatchesURL(url)) { | 725 } else if (!extension->web_extent().MatchesURL(url)) { |
| 726 continue; | 726 continue; |
| 727 } | 727 } |
| 728 | 728 |
| 729 result->push_back( | 729 result->push_back( |
| 730 ExtensionPage(url, process->id(), host->routing_id(), | 730 ExtensionPage(url, process->id(), host->routing_id(), |
| 731 process->browser_context()->IsOffTheRecord())); | 731 process->browser_context()->IsOffTheRecord())); |
| 732 } | 732 } |
| 733 } | 733 } |
| OLD | NEW |