| 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 "extensions/browser/api/management/management_api.h" | 5 #include "extensions/browser/api/management/management_api.h" |
| 6 | 6 |
| 7 #include <memory> |
| 7 #include <string> | 8 #include <string> |
| 8 #include <utility> | 9 #include <utility> |
| 9 #include <vector> | 10 #include <vector> |
| 10 | 11 |
| 11 #include "base/bind.h" | 12 #include "base/bind.h" |
| 12 #include "base/json/json_writer.h" | 13 #include "base/json/json_writer.h" |
| 13 #include "base/lazy_instance.h" | 14 #include "base/lazy_instance.h" |
| 14 #include "base/logging.h" | 15 #include "base/logging.h" |
| 15 #include "base/memory/linked_ptr.h" | 16 #include "base/memory/linked_ptr.h" |
| 16 #include "base/memory/scoped_ptr.h" | |
| 17 #include "base/metrics/histogram.h" | 17 #include "base/metrics/histogram.h" |
| 18 #include "base/strings/string_number_conversions.h" | 18 #include "base/strings/string_number_conversions.h" |
| 19 #include "base/strings/string_util.h" | 19 #include "base/strings/string_util.h" |
| 20 #include "base/strings/utf_string_conversions.h" | 20 #include "base/strings/utf_string_conversions.h" |
| 21 #include "build/build_config.h" | 21 #include "build/build_config.h" |
| 22 #include "content/public/browser/browser_context.h" | 22 #include "content/public/browser/browser_context.h" |
| 23 #include "extensions/browser/api/extensions_api_client.h" | 23 #include "extensions/browser/api/extensions_api_client.h" |
| 24 #include "extensions/browser/api/management/management_api_constants.h" | 24 #include "extensions/browser/api/management/management_api_constants.h" |
| 25 #include "extensions/browser/event_router.h" | 25 #include "extensions/browser/event_router.h" |
| 26 #include "extensions/browser/extension_prefs.h" | 26 #include "extensions/browser/extension_prefs.h" |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 273 AddExtensionInfo(registry->disabled_extensions(), &extensions, | 273 AddExtensionInfo(registry->disabled_extensions(), &extensions, |
| 274 browser_context()); | 274 browser_context()); |
| 275 AddExtensionInfo(registry->terminated_extensions(), &extensions, | 275 AddExtensionInfo(registry->terminated_extensions(), &extensions, |
| 276 browser_context()); | 276 browser_context()); |
| 277 | 277 |
| 278 results_ = management::GetAll::Results::Create(extensions); | 278 results_ = management::GetAll::Results::Create(extensions); |
| 279 return true; | 279 return true; |
| 280 } | 280 } |
| 281 | 281 |
| 282 bool ManagementGetFunction::RunSync() { | 282 bool ManagementGetFunction::RunSync() { |
| 283 scoped_ptr<management::Get::Params> params( | 283 std::unique_ptr<management::Get::Params> params( |
| 284 management::Get::Params::Create(*args_)); | 284 management::Get::Params::Create(*args_)); |
| 285 EXTENSION_FUNCTION_VALIDATE(params.get()); | 285 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 286 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); | 286 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); |
| 287 | 287 |
| 288 const Extension* extension = | 288 const Extension* extension = |
| 289 registry->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); | 289 registry->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); |
| 290 if (!extension) { | 290 if (!extension) { |
| 291 error_ = | 291 error_ = |
| 292 ErrorUtils::FormatErrorMessage(keys::kNoExtensionError, params->id); | 292 ErrorUtils::FormatErrorMessage(keys::kNoExtensionError, params->id); |
| 293 return false; | 293 return false; |
| 294 } | 294 } |
| 295 | 295 |
| 296 results_ = management::Get::Results::Create( | 296 results_ = management::Get::Results::Create( |
| 297 CreateExtensionInfo(*extension, browser_context())); | 297 CreateExtensionInfo(*extension, browser_context())); |
| 298 | 298 |
| 299 return true; | 299 return true; |
| 300 } | 300 } |
| 301 | 301 |
| 302 bool ManagementGetSelfFunction::RunSync() { | 302 bool ManagementGetSelfFunction::RunSync() { |
| 303 results_ = management::Get::Results::Create( | 303 results_ = management::Get::Results::Create( |
| 304 CreateExtensionInfo(*extension_, browser_context())); | 304 CreateExtensionInfo(*extension_, browser_context())); |
| 305 | 305 |
| 306 return true; | 306 return true; |
| 307 } | 307 } |
| 308 | 308 |
| 309 bool ManagementGetPermissionWarningsByIdFunction::RunSync() { | 309 bool ManagementGetPermissionWarningsByIdFunction::RunSync() { |
| 310 scoped_ptr<management::GetPermissionWarningsById::Params> params( | 310 std::unique_ptr<management::GetPermissionWarningsById::Params> params( |
| 311 management::GetPermissionWarningsById::Params::Create(*args_)); | 311 management::GetPermissionWarningsById::Params::Create(*args_)); |
| 312 EXTENSION_FUNCTION_VALIDATE(params.get()); | 312 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 313 | 313 |
| 314 const Extension* extension = | 314 const Extension* extension = |
| 315 ExtensionRegistry::Get(browser_context()) | 315 ExtensionRegistry::Get(browser_context()) |
| 316 ->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); | 316 ->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); |
| 317 if (!extension) { | 317 if (!extension) { |
| 318 error_ = | 318 error_ = |
| 319 ErrorUtils::FormatErrorMessage(keys::kNoExtensionError, params->id); | 319 ErrorUtils::FormatErrorMessage(keys::kNoExtensionError, params->id); |
| 320 return false; | 320 return false; |
| 321 } | 321 } |
| 322 | 322 |
| 323 std::vector<std::string> warnings = CreateWarningsList(extension); | 323 std::vector<std::string> warnings = CreateWarningsList(extension); |
| 324 results_ = management::GetPermissionWarningsById::Results::Create(warnings); | 324 results_ = management::GetPermissionWarningsById::Results::Create(warnings); |
| 325 return true; | 325 return true; |
| 326 } | 326 } |
| 327 | 327 |
| 328 bool ManagementGetPermissionWarningsByManifestFunction::RunAsync() { | 328 bool ManagementGetPermissionWarningsByManifestFunction::RunAsync() { |
| 329 scoped_ptr<management::GetPermissionWarningsByManifest::Params> params( | 329 std::unique_ptr<management::GetPermissionWarningsByManifest::Params> params( |
| 330 management::GetPermissionWarningsByManifest::Params::Create(*args_)); | 330 management::GetPermissionWarningsByManifest::Params::Create(*args_)); |
| 331 EXTENSION_FUNCTION_VALIDATE(params.get()); | 331 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 332 | 332 |
| 333 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() | 333 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() |
| 334 ->Get(browser_context()) | 334 ->Get(browser_context()) |
| 335 ->GetDelegate(); | 335 ->GetDelegate(); |
| 336 | 336 |
| 337 if (delegate) { | 337 if (delegate) { |
| 338 delegate->GetPermissionWarningsByManifestFunctionDelegate( | 338 delegate->GetPermissionWarningsByManifestFunctionDelegate( |
| 339 this, params->manifest_str); | 339 this, params->manifest_str); |
| 340 | 340 |
| 341 // Matched with a Release() in OnParseSuccess/Failure(). | 341 // Matched with a Release() in OnParseSuccess/Failure(). |
| 342 AddRef(); | 342 AddRef(); |
| 343 | 343 |
| 344 // Response is sent async in OnParseSuccess/Failure(). | 344 // Response is sent async in OnParseSuccess/Failure(). |
| 345 return true; | 345 return true; |
| 346 } else { | 346 } else { |
| 347 // TODO(lfg) add error string | 347 // TODO(lfg) add error string |
| 348 OnParseFailure(""); | 348 OnParseFailure(""); |
| 349 return false; | 349 return false; |
| 350 } | 350 } |
| 351 } | 351 } |
| 352 | 352 |
| 353 void ManagementGetPermissionWarningsByManifestFunction::OnParseSuccess( | 353 void ManagementGetPermissionWarningsByManifestFunction::OnParseSuccess( |
| 354 scoped_ptr<base::Value> value) { | 354 std::unique_ptr<base::Value> value) { |
| 355 if (!value->IsType(base::Value::TYPE_DICTIONARY)) { | 355 if (!value->IsType(base::Value::TYPE_DICTIONARY)) { |
| 356 OnParseFailure(keys::kManifestParseError); | 356 OnParseFailure(keys::kManifestParseError); |
| 357 return; | 357 return; |
| 358 } | 358 } |
| 359 const base::DictionaryValue* parsed_manifest = | 359 const base::DictionaryValue* parsed_manifest = |
| 360 static_cast<const base::DictionaryValue*>(value.get()); | 360 static_cast<const base::DictionaryValue*>(value.get()); |
| 361 | 361 |
| 362 scoped_refptr<Extension> extension = | 362 scoped_refptr<Extension> extension = |
| 363 Extension::Create(base::FilePath(), Manifest::INVALID_LOCATION, | 363 Extension::Create(base::FilePath(), Manifest::INVALID_LOCATION, |
| 364 *parsed_manifest, Extension::NO_FLAGS, &error_); | 364 *parsed_manifest, Extension::NO_FLAGS, &error_); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 379 void ManagementGetPermissionWarningsByManifestFunction::OnParseFailure( | 379 void ManagementGetPermissionWarningsByManifestFunction::OnParseFailure( |
| 380 const std::string& error) { | 380 const std::string& error) { |
| 381 error_ = error; | 381 error_ = error; |
| 382 SendResponse(false); | 382 SendResponse(false); |
| 383 | 383 |
| 384 // Matched with AddRef() in RunAsync(). | 384 // Matched with AddRef() in RunAsync(). |
| 385 Release(); | 385 Release(); |
| 386 } | 386 } |
| 387 | 387 |
| 388 bool ManagementLaunchAppFunction::RunSync() { | 388 bool ManagementLaunchAppFunction::RunSync() { |
| 389 scoped_ptr<management::LaunchApp::Params> params( | 389 std::unique_ptr<management::LaunchApp::Params> params( |
| 390 management::LaunchApp::Params::Create(*args_)); | 390 management::LaunchApp::Params::Create(*args_)); |
| 391 EXTENSION_FUNCTION_VALIDATE(params.get()); | 391 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 392 const Extension* extension = | 392 const Extension* extension = |
| 393 ExtensionRegistry::Get(browser_context()) | 393 ExtensionRegistry::Get(browser_context()) |
| 394 ->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); | 394 ->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); |
| 395 if (!extension) { | 395 if (!extension) { |
| 396 error_ = | 396 error_ = |
| 397 ErrorUtils::FormatErrorMessage(keys::kNoExtensionError, params->id); | 397 ErrorUtils::FormatErrorMessage(keys::kNoExtensionError, params->id); |
| 398 return false; | 398 return false; |
| 399 } | 399 } |
| 400 if (!extension->is_app()) { | 400 if (!extension->is_app()) { |
| 401 error_ = ErrorUtils::FormatErrorMessage(keys::kNotAnAppError, params->id); | 401 error_ = ErrorUtils::FormatErrorMessage(keys::kNotAnAppError, params->id); |
| 402 return false; | 402 return false; |
| 403 } | 403 } |
| 404 | 404 |
| 405 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() | 405 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() |
| 406 ->Get(browser_context()) | 406 ->Get(browser_context()) |
| 407 ->GetDelegate(); | 407 ->GetDelegate(); |
| 408 return delegate->LaunchAppFunctionDelegate(extension, browser_context()); | 408 return delegate->LaunchAppFunctionDelegate(extension, browser_context()); |
| 409 } | 409 } |
| 410 | 410 |
| 411 ManagementSetEnabledFunction::ManagementSetEnabledFunction() { | 411 ManagementSetEnabledFunction::ManagementSetEnabledFunction() { |
| 412 } | 412 } |
| 413 | 413 |
| 414 ManagementSetEnabledFunction::~ManagementSetEnabledFunction() { | 414 ManagementSetEnabledFunction::~ManagementSetEnabledFunction() { |
| 415 } | 415 } |
| 416 | 416 |
| 417 ExtensionFunction::ResponseAction ManagementSetEnabledFunction::Run() { | 417 ExtensionFunction::ResponseAction ManagementSetEnabledFunction::Run() { |
| 418 scoped_ptr<management::SetEnabled::Params> params( | 418 std::unique_ptr<management::SetEnabled::Params> params( |
| 419 management::SetEnabled::Params::Create(*args_)); | 419 management::SetEnabled::Params::Create(*args_)); |
| 420 EXTENSION_FUNCTION_VALIDATE(params.get()); | 420 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 421 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); | 421 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); |
| 422 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() | 422 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() |
| 423 ->Get(browser_context()) | 423 ->Get(browser_context()) |
| 424 ->GetDelegate(); | 424 ->GetDelegate(); |
| 425 | 425 |
| 426 extension_id_ = params->id; | 426 extension_id_ = params->id; |
| 427 | 427 |
| 428 const Extension* extension = | 428 const Extension* extension = |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 595 Finish(success, error); | 595 Finish(success, error); |
| 596 } | 596 } |
| 597 | 597 |
| 598 ManagementUninstallFunction::ManagementUninstallFunction() { | 598 ManagementUninstallFunction::ManagementUninstallFunction() { |
| 599 } | 599 } |
| 600 | 600 |
| 601 ManagementUninstallFunction::~ManagementUninstallFunction() { | 601 ManagementUninstallFunction::~ManagementUninstallFunction() { |
| 602 } | 602 } |
| 603 | 603 |
| 604 ExtensionFunction::ResponseAction ManagementUninstallFunction::Run() { | 604 ExtensionFunction::ResponseAction ManagementUninstallFunction::Run() { |
| 605 scoped_ptr<management::Uninstall::Params> params( | 605 std::unique_ptr<management::Uninstall::Params> params( |
| 606 management::Uninstall::Params::Create(*args_)); | 606 management::Uninstall::Params::Create(*args_)); |
| 607 EXTENSION_FUNCTION_VALIDATE(params.get()); | 607 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 608 | 608 |
| 609 bool show_confirm_dialog = params->options.get() && | 609 bool show_confirm_dialog = params->options.get() && |
| 610 params->options->show_confirm_dialog.get() && | 610 params->options->show_confirm_dialog.get() && |
| 611 *params->options->show_confirm_dialog; | 611 *params->options->show_confirm_dialog; |
| 612 return Uninstall(params->id, show_confirm_dialog); | 612 return Uninstall(params->id, show_confirm_dialog); |
| 613 } | 613 } |
| 614 | 614 |
| 615 ManagementUninstallSelfFunction::ManagementUninstallSelfFunction() { | 615 ManagementUninstallSelfFunction::ManagementUninstallSelfFunction() { |
| 616 } | 616 } |
| 617 | 617 |
| 618 ManagementUninstallSelfFunction::~ManagementUninstallSelfFunction() { | 618 ManagementUninstallSelfFunction::~ManagementUninstallSelfFunction() { |
| 619 } | 619 } |
| 620 | 620 |
| 621 ExtensionFunction::ResponseAction ManagementUninstallSelfFunction::Run() { | 621 ExtensionFunction::ResponseAction ManagementUninstallSelfFunction::Run() { |
| 622 scoped_ptr<management::UninstallSelf::Params> params( | 622 std::unique_ptr<management::UninstallSelf::Params> params( |
| 623 management::UninstallSelf::Params::Create(*args_)); | 623 management::UninstallSelf::Params::Create(*args_)); |
| 624 EXTENSION_FUNCTION_VALIDATE(params.get()); | 624 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 625 EXTENSION_FUNCTION_VALIDATE(extension_.get()); | 625 EXTENSION_FUNCTION_VALIDATE(extension_.get()); |
| 626 | 626 |
| 627 bool show_confirm_dialog = params->options.get() && | 627 bool show_confirm_dialog = params->options.get() && |
| 628 params->options->show_confirm_dialog.get() && | 628 params->options->show_confirm_dialog.get() && |
| 629 *params->options->show_confirm_dialog; | 629 *params->options->show_confirm_dialog; |
| 630 return Uninstall(extension_->id(), show_confirm_dialog); | 630 return Uninstall(extension_->id(), show_confirm_dialog); |
| 631 } | 631 } |
| 632 | 632 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 648 SendResponse(created); | 648 SendResponse(created); |
| 649 Release(); | 649 Release(); |
| 650 } | 650 } |
| 651 | 651 |
| 652 bool ManagementCreateAppShortcutFunction::RunAsync() { | 652 bool ManagementCreateAppShortcutFunction::RunAsync() { |
| 653 if (!user_gesture()) { | 653 if (!user_gesture()) { |
| 654 error_ = keys::kGestureNeededForCreateAppShortcutError; | 654 error_ = keys::kGestureNeededForCreateAppShortcutError; |
| 655 return false; | 655 return false; |
| 656 } | 656 } |
| 657 | 657 |
| 658 scoped_ptr<management::CreateAppShortcut::Params> params( | 658 std::unique_ptr<management::CreateAppShortcut::Params> params( |
| 659 management::CreateAppShortcut::Params::Create(*args_)); | 659 management::CreateAppShortcut::Params::Create(*args_)); |
| 660 EXTENSION_FUNCTION_VALIDATE(params.get()); | 660 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 661 const Extension* extension = | 661 const Extension* extension = |
| 662 ExtensionRegistry::Get(browser_context()) | 662 ExtensionRegistry::Get(browser_context()) |
| 663 ->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); | 663 ->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); |
| 664 if (!extension) { | 664 if (!extension) { |
| 665 error_ = | 665 error_ = |
| 666 ErrorUtils::FormatErrorMessage(keys::kNoExtensionError, params->id); | 666 ErrorUtils::FormatErrorMessage(keys::kNoExtensionError, params->id); |
| 667 return false; | 667 return false; |
| 668 } | 668 } |
| (...skipping 30 matching lines...) Expand all Loading... |
| 699 // Response is sent async in OnCloseShortcutPrompt(). | 699 // Response is sent async in OnCloseShortcutPrompt(). |
| 700 return true; | 700 return true; |
| 701 } | 701 } |
| 702 | 702 |
| 703 bool ManagementSetLaunchTypeFunction::RunSync() { | 703 bool ManagementSetLaunchTypeFunction::RunSync() { |
| 704 if (!user_gesture()) { | 704 if (!user_gesture()) { |
| 705 error_ = keys::kGestureNeededForSetLaunchTypeError; | 705 error_ = keys::kGestureNeededForSetLaunchTypeError; |
| 706 return false; | 706 return false; |
| 707 } | 707 } |
| 708 | 708 |
| 709 scoped_ptr<management::SetLaunchType::Params> params( | 709 std::unique_ptr<management::SetLaunchType::Params> params( |
| 710 management::SetLaunchType::Params::Create(*args_)); | 710 management::SetLaunchType::Params::Create(*args_)); |
| 711 EXTENSION_FUNCTION_VALIDATE(params.get()); | 711 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 712 const Extension* extension = | 712 const Extension* extension = |
| 713 ExtensionRegistry::Get(browser_context()) | 713 ExtensionRegistry::Get(browser_context()) |
| 714 ->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); | 714 ->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); |
| 715 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() | 715 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() |
| 716 ->Get(browser_context()) | 716 ->Get(browser_context()) |
| 717 ->GetDelegate(); | 717 ->GetDelegate(); |
| 718 if (!extension) { | 718 if (!extension) { |
| 719 error_ = | 719 error_ = |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 780 Release(); | 780 Release(); |
| 781 } | 781 } |
| 782 } | 782 } |
| 783 | 783 |
| 784 bool ManagementGenerateAppForLinkFunction::RunAsync() { | 784 bool ManagementGenerateAppForLinkFunction::RunAsync() { |
| 785 if (!user_gesture()) { | 785 if (!user_gesture()) { |
| 786 error_ = keys::kGestureNeededForGenerateAppForLinkError; | 786 error_ = keys::kGestureNeededForGenerateAppForLinkError; |
| 787 return false; | 787 return false; |
| 788 } | 788 } |
| 789 | 789 |
| 790 scoped_ptr<management::GenerateAppForLink::Params> params( | 790 std::unique_ptr<management::GenerateAppForLink::Params> params( |
| 791 management::GenerateAppForLink::Params::Create(*args_)); | 791 management::GenerateAppForLink::Params::Create(*args_)); |
| 792 EXTENSION_FUNCTION_VALIDATE(params.get()); | 792 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 793 | 793 |
| 794 GURL launch_url(params->url); | 794 GURL launch_url(params->url); |
| 795 if (!launch_url.is_valid() || !launch_url.SchemeIsHTTPOrHTTPS()) { | 795 if (!launch_url.is_valid() || !launch_url.SchemeIsHTTPOrHTTPS()) { |
| 796 error_ = | 796 error_ = |
| 797 ErrorUtils::FormatErrorMessage(keys::kInvalidURLError, params->url); | 797 ErrorUtils::FormatErrorMessage(keys::kInvalidURLError, params->url); |
| 798 return false; | 798 return false; |
| 799 } | 799 } |
| 800 | 800 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 855 BroadcastEvent(extension, events::MANAGEMENT_ON_UNINSTALLED, | 855 BroadcastEvent(extension, events::MANAGEMENT_ON_UNINSTALLED, |
| 856 management::OnUninstalled::kEventName); | 856 management::OnUninstalled::kEventName); |
| 857 } | 857 } |
| 858 | 858 |
| 859 void ManagementEventRouter::BroadcastEvent( | 859 void ManagementEventRouter::BroadcastEvent( |
| 860 const Extension* extension, | 860 const Extension* extension, |
| 861 events::HistogramValue histogram_value, | 861 events::HistogramValue histogram_value, |
| 862 const char* event_name) { | 862 const char* event_name) { |
| 863 if (extension->ShouldNotBeVisible()) | 863 if (extension->ShouldNotBeVisible()) |
| 864 return; // Don't dispatch events for built-in extenions. | 864 return; // Don't dispatch events for built-in extenions. |
| 865 scoped_ptr<base::ListValue> args(new base::ListValue()); | 865 std::unique_ptr<base::ListValue> args(new base::ListValue()); |
| 866 if (event_name == management::OnUninstalled::kEventName) { | 866 if (event_name == management::OnUninstalled::kEventName) { |
| 867 args->Append(new base::StringValue(extension->id())); | 867 args->Append(new base::StringValue(extension->id())); |
| 868 } else { | 868 } else { |
| 869 args->Append(CreateExtensionInfo(*extension, browser_context_).ToValue()); | 869 args->Append(CreateExtensionInfo(*extension, browser_context_).ToValue()); |
| 870 } | 870 } |
| 871 | 871 |
| 872 EventRouter::Get(browser_context_) | 872 EventRouter::Get(browser_context_) |
| 873 ->BroadcastEvent(scoped_ptr<Event>( | 873 ->BroadcastEvent(std::unique_ptr<Event>( |
| 874 new Event(histogram_value, event_name, std::move(args)))); | 874 new Event(histogram_value, event_name, std::move(args)))); |
| 875 } | 875 } |
| 876 | 876 |
| 877 ManagementAPI::ManagementAPI(content::BrowserContext* context) | 877 ManagementAPI::ManagementAPI(content::BrowserContext* context) |
| 878 : browser_context_(context), | 878 : browser_context_(context), |
| 879 delegate_(ExtensionsAPIClient::Get()->CreateManagementAPIDelegate()) { | 879 delegate_(ExtensionsAPIClient::Get()->CreateManagementAPIDelegate()) { |
| 880 EventRouter* event_router = EventRouter::Get(browser_context_); | 880 EventRouter* event_router = EventRouter::Get(browser_context_); |
| 881 event_router->RegisterObserver(this, management::OnInstalled::kEventName); | 881 event_router->RegisterObserver(this, management::OnInstalled::kEventName); |
| 882 event_router->RegisterObserver(this, management::OnUninstalled::kEventName); | 882 event_router->RegisterObserver(this, management::OnUninstalled::kEventName); |
| 883 event_router->RegisterObserver(this, management::OnEnabled::kEventName); | 883 event_router->RegisterObserver(this, management::OnEnabled::kEventName); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 899 ManagementAPI::GetFactoryInstance() { | 899 ManagementAPI::GetFactoryInstance() { |
| 900 return g_factory.Pointer(); | 900 return g_factory.Pointer(); |
| 901 } | 901 } |
| 902 | 902 |
| 903 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { | 903 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { |
| 904 management_event_router_.reset(new ManagementEventRouter(browser_context_)); | 904 management_event_router_.reset(new ManagementEventRouter(browser_context_)); |
| 905 EventRouter::Get(browser_context_)->UnregisterObserver(this); | 905 EventRouter::Get(browser_context_)->UnregisterObserver(this); |
| 906 } | 906 } |
| 907 | 907 |
| 908 } // namespace extensions | 908 } // namespace extensions |
| OLD | NEW |