| 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 <memory> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 | 261 |
| 262 if (extension.ShouldNotBeVisible()) | 262 if (extension.ShouldNotBeVisible()) |
| 263 continue; // Skip built-in extensions/apps. | 263 continue; // Skip built-in extensions/apps. |
| 264 | 264 |
| 265 extension_list->push_back(CreateExtensionInfo(extension, context)); | 265 extension_list->push_back(CreateExtensionInfo(extension, context)); |
| 266 } | 266 } |
| 267 } | 267 } |
| 268 | 268 |
| 269 } // namespace | 269 } // namespace |
| 270 | 270 |
| 271 bool ManagementGetAllFunction::RunSync() { | 271 ExtensionFunction::ResponseAction ManagementGetAllFunction::Run() { |
| 272 ExtensionInfoList extensions; | 272 ExtensionInfoList extensions; |
| 273 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); | 273 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); |
| 274 | 274 |
| 275 AddExtensionInfo(registry->enabled_extensions(), &extensions, | 275 AddExtensionInfo(registry->enabled_extensions(), &extensions, |
| 276 browser_context()); | 276 browser_context()); |
| 277 AddExtensionInfo(registry->disabled_extensions(), &extensions, | 277 AddExtensionInfo(registry->disabled_extensions(), &extensions, |
| 278 browser_context()); | 278 browser_context()); |
| 279 AddExtensionInfo(registry->terminated_extensions(), &extensions, | 279 AddExtensionInfo(registry->terminated_extensions(), &extensions, |
| 280 browser_context()); | 280 browser_context()); |
| 281 | 281 |
| 282 results_ = management::GetAll::Results::Create(extensions); | 282 return RespondNow( |
| 283 return true; | 283 ArgumentList(management::GetAll::Results::Create(extensions))); |
| 284 } | 284 } |
| 285 | 285 |
| 286 bool ManagementGetFunction::RunSync() { | 286 ExtensionFunction::ResponseAction ManagementGetFunction::Run() { |
| 287 std::unique_ptr<management::Get::Params> params( | 287 std::unique_ptr<management::Get::Params> params( |
| 288 management::Get::Params::Create(*args_)); | 288 management::Get::Params::Create(*args_)); |
| 289 EXTENSION_FUNCTION_VALIDATE(params.get()); | 289 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 290 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); | 290 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); |
| 291 | 291 |
| 292 const Extension* extension = | 292 const Extension* extension = |
| 293 registry->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); | 293 registry->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); |
| 294 if (!extension) { | 294 if (!extension) |
| 295 error_ = | 295 return RespondNow(Error(keys::kNoExtensionError, params->id)); |
| 296 ErrorUtils::FormatErrorMessage(keys::kNoExtensionError, params->id); | |
| 297 return false; | |
| 298 } | |
| 299 | 296 |
| 300 results_ = management::Get::Results::Create( | 297 return RespondNow(ArgumentList(management::Get::Results::Create( |
| 301 CreateExtensionInfo(*extension, browser_context())); | 298 CreateExtensionInfo(*extension, browser_context())))); |
| 302 | |
| 303 return true; | |
| 304 } | 299 } |
| 305 | 300 |
| 306 bool ManagementGetSelfFunction::RunSync() { | 301 ExtensionFunction::ResponseAction ManagementGetSelfFunction::Run() { |
| 307 results_ = management::Get::Results::Create( | 302 return RespondNow(ArgumentList(management::Get::Results::Create( |
| 308 CreateExtensionInfo(*extension_, browser_context())); | 303 CreateExtensionInfo(*extension_, browser_context())))); |
| 309 | |
| 310 return true; | |
| 311 } | 304 } |
| 312 | 305 |
| 313 bool ManagementGetPermissionWarningsByIdFunction::RunSync() { | 306 ExtensionFunction::ResponseAction |
| 307 ManagementGetPermissionWarningsByIdFunction::Run() { |
| 314 std::unique_ptr<management::GetPermissionWarningsById::Params> params( | 308 std::unique_ptr<management::GetPermissionWarningsById::Params> params( |
| 315 management::GetPermissionWarningsById::Params::Create(*args_)); | 309 management::GetPermissionWarningsById::Params::Create(*args_)); |
| 316 EXTENSION_FUNCTION_VALIDATE(params.get()); | 310 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 317 | 311 |
| 318 const Extension* extension = | 312 const Extension* extension = |
| 319 ExtensionRegistry::Get(browser_context()) | 313 ExtensionRegistry::Get(browser_context()) |
| 320 ->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); | 314 ->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); |
| 321 if (!extension) { | 315 if (!extension) |
| 322 error_ = | 316 return RespondNow(Error(keys::kNoExtensionError, params->id)); |
| 323 ErrorUtils::FormatErrorMessage(keys::kNoExtensionError, params->id); | |
| 324 return false; | |
| 325 } | |
| 326 | 317 |
| 327 std::vector<std::string> warnings = CreateWarningsList(extension); | 318 std::vector<std::string> warnings = CreateWarningsList(extension); |
| 328 results_ = management::GetPermissionWarningsById::Results::Create(warnings); | 319 return RespondNow(ArgumentList( |
| 329 return true; | 320 management::GetPermissionWarningsById::Results::Create(warnings))); |
| 330 } | 321 } |
| 331 | 322 |
| 332 bool ManagementGetPermissionWarningsByManifestFunction::RunAsync() { | 323 bool ManagementGetPermissionWarningsByManifestFunction::RunAsync() { |
| 333 std::unique_ptr<management::GetPermissionWarningsByManifest::Params> params( | 324 std::unique_ptr<management::GetPermissionWarningsByManifest::Params> params( |
| 334 management::GetPermissionWarningsByManifest::Params::Create(*args_)); | 325 management::GetPermissionWarningsByManifest::Params::Create(*args_)); |
| 335 EXTENSION_FUNCTION_VALIDATE(params.get()); | 326 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 336 | 327 |
| 337 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() | 328 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() |
| 338 ->Get(browser_context()) | 329 ->Get(browser_context()) |
| 339 ->GetDelegate(); | 330 ->GetDelegate(); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 | 373 |
| 383 void ManagementGetPermissionWarningsByManifestFunction::OnParseFailure( | 374 void ManagementGetPermissionWarningsByManifestFunction::OnParseFailure( |
| 384 const std::string& error) { | 375 const std::string& error) { |
| 385 error_ = error; | 376 error_ = error; |
| 386 SendResponse(false); | 377 SendResponse(false); |
| 387 | 378 |
| 388 // Matched with AddRef() in RunAsync(). | 379 // Matched with AddRef() in RunAsync(). |
| 389 Release(); | 380 Release(); |
| 390 } | 381 } |
| 391 | 382 |
| 392 bool ManagementLaunchAppFunction::RunSync() { | 383 ExtensionFunction::ResponseAction ManagementLaunchAppFunction::Run() { |
| 393 std::unique_ptr<management::LaunchApp::Params> params( | 384 std::unique_ptr<management::LaunchApp::Params> params( |
| 394 management::LaunchApp::Params::Create(*args_)); | 385 management::LaunchApp::Params::Create(*args_)); |
| 395 EXTENSION_FUNCTION_VALIDATE(params.get()); | 386 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 396 const Extension* extension = | 387 const Extension* extension = |
| 397 ExtensionRegistry::Get(browser_context()) | 388 ExtensionRegistry::Get(browser_context()) |
| 398 ->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); | 389 ->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); |
| 399 if (!extension) { | 390 if (!extension) |
| 400 error_ = | 391 return RespondNow(Error(keys::kNoExtensionError, params->id)); |
| 401 ErrorUtils::FormatErrorMessage(keys::kNoExtensionError, params->id); | 392 if (!extension->is_app()) |
| 402 return false; | 393 return RespondNow(Error(keys::kNotAnAppError, params->id)); |
| 403 } | |
| 404 if (!extension->is_app()) { | |
| 405 error_ = ErrorUtils::FormatErrorMessage(keys::kNotAnAppError, params->id); | |
| 406 return false; | |
| 407 } | |
| 408 | 394 |
| 409 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() | 395 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() |
| 410 ->Get(browser_context()) | 396 ->Get(browser_context()) |
| 411 ->GetDelegate(); | 397 ->GetDelegate(); |
| 412 return delegate->LaunchAppFunctionDelegate(extension, browser_context()); | 398 delegate->LaunchAppFunctionDelegate(extension, browser_context()); |
| 399 return RespondNow(NoArguments()); |
| 413 } | 400 } |
| 414 | 401 |
| 415 ManagementSetEnabledFunction::ManagementSetEnabledFunction() { | 402 ManagementSetEnabledFunction::ManagementSetEnabledFunction() { |
| 416 } | 403 } |
| 417 | 404 |
| 418 ManagementSetEnabledFunction::~ManagementSetEnabledFunction() { | 405 ManagementSetEnabledFunction::~ManagementSetEnabledFunction() { |
| 419 } | 406 } |
| 420 | 407 |
| 421 ExtensionFunction::ResponseAction ManagementSetEnabledFunction::Run() { | 408 ExtensionFunction::ResponseAction ManagementSetEnabledFunction::Run() { |
| 422 std::unique_ptr<management::SetEnabled::Params> params( | 409 std::unique_ptr<management::SetEnabled::Params> params( |
| (...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 697 ->GetDelegate() | 684 ->GetDelegate() |
| 698 ->CreateAppShortcutFunctionDelegate(this, extension)) { | 685 ->CreateAppShortcutFunctionDelegate(this, extension)) { |
| 699 // Matched with a Release() in OnCloseShortcutPrompt(). | 686 // Matched with a Release() in OnCloseShortcutPrompt(). |
| 700 AddRef(); | 687 AddRef(); |
| 701 } | 688 } |
| 702 | 689 |
| 703 // Response is sent async in OnCloseShortcutPrompt(). | 690 // Response is sent async in OnCloseShortcutPrompt(). |
| 704 return true; | 691 return true; |
| 705 } | 692 } |
| 706 | 693 |
| 707 bool ManagementSetLaunchTypeFunction::RunSync() { | 694 ExtensionFunction::ResponseAction ManagementSetLaunchTypeFunction::Run() { |
| 708 if (!user_gesture()) { | 695 if (!user_gesture()) |
| 709 error_ = keys::kGestureNeededForSetLaunchTypeError; | 696 return RespondNow(Error(keys::kGestureNeededForSetLaunchTypeError)); |
| 710 return false; | |
| 711 } | |
| 712 | 697 |
| 713 std::unique_ptr<management::SetLaunchType::Params> params( | 698 std::unique_ptr<management::SetLaunchType::Params> params( |
| 714 management::SetLaunchType::Params::Create(*args_)); | 699 management::SetLaunchType::Params::Create(*args_)); |
| 715 EXTENSION_FUNCTION_VALIDATE(params.get()); | 700 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 716 const Extension* extension = | 701 const Extension* extension = |
| 717 ExtensionRegistry::Get(browser_context()) | 702 ExtensionRegistry::Get(browser_context()) |
| 718 ->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); | 703 ->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); |
| 719 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() | 704 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() |
| 720 ->Get(browser_context()) | 705 ->Get(browser_context()) |
| 721 ->GetDelegate(); | 706 ->GetDelegate(); |
| 722 if (!extension) { | 707 if (!extension) |
| 723 error_ = | 708 return RespondNow(Error(keys::kNoExtensionError, params->id)); |
| 724 ErrorUtils::FormatErrorMessage(keys::kNoExtensionError, params->id); | |
| 725 return false; | |
| 726 } | |
| 727 | 709 |
| 728 if (!extension->is_app()) { | 710 if (!extension->is_app()) |
| 729 error_ = ErrorUtils::FormatErrorMessage(keys::kNotAnAppError, params->id); | 711 return RespondNow(Error(keys::kNotAnAppError, params->id)); |
| 730 return false; | |
| 731 } | |
| 732 | 712 |
| 733 std::vector<management::LaunchType> available_launch_types = | 713 std::vector<management::LaunchType> available_launch_types = |
| 734 GetAvailableLaunchTypes(*extension, delegate); | 714 GetAvailableLaunchTypes(*extension, delegate); |
| 735 | 715 |
| 736 management::LaunchType app_launch_type = params->launch_type; | 716 management::LaunchType app_launch_type = params->launch_type; |
| 737 if (std::find(available_launch_types.begin(), available_launch_types.end(), | 717 if (std::find(available_launch_types.begin(), available_launch_types.end(), |
| 738 app_launch_type) == available_launch_types.end()) { | 718 app_launch_type) == available_launch_types.end()) { |
| 739 error_ = keys::kLaunchTypeNotAvailableError; | 719 return RespondNow(Error(keys::kLaunchTypeNotAvailableError)); |
| 740 return false; | |
| 741 } | 720 } |
| 742 | 721 |
| 743 LaunchType launch_type = LAUNCH_TYPE_DEFAULT; | 722 LaunchType launch_type = LAUNCH_TYPE_DEFAULT; |
| 744 switch (app_launch_type) { | 723 switch (app_launch_type) { |
| 745 case management::LAUNCH_TYPE_OPEN_AS_PINNED_TAB: | 724 case management::LAUNCH_TYPE_OPEN_AS_PINNED_TAB: |
| 746 launch_type = LAUNCH_TYPE_PINNED; | 725 launch_type = LAUNCH_TYPE_PINNED; |
| 747 break; | 726 break; |
| 748 case management::LAUNCH_TYPE_OPEN_AS_REGULAR_TAB: | 727 case management::LAUNCH_TYPE_OPEN_AS_REGULAR_TAB: |
| 749 launch_type = LAUNCH_TYPE_REGULAR; | 728 launch_type = LAUNCH_TYPE_REGULAR; |
| 750 break; | 729 break; |
| 751 case management::LAUNCH_TYPE_OPEN_FULL_SCREEN: | 730 case management::LAUNCH_TYPE_OPEN_FULL_SCREEN: |
| 752 launch_type = LAUNCH_TYPE_FULLSCREEN; | 731 launch_type = LAUNCH_TYPE_FULLSCREEN; |
| 753 break; | 732 break; |
| 754 case management::LAUNCH_TYPE_OPEN_AS_WINDOW: | 733 case management::LAUNCH_TYPE_OPEN_AS_WINDOW: |
| 755 launch_type = LAUNCH_TYPE_WINDOW; | 734 launch_type = LAUNCH_TYPE_WINDOW; |
| 756 break; | 735 break; |
| 757 case management::LAUNCH_TYPE_NONE: | 736 case management::LAUNCH_TYPE_NONE: |
| 758 NOTREACHED(); | 737 NOTREACHED(); |
| 759 } | 738 } |
| 760 | 739 |
| 761 delegate->SetLaunchType(browser_context(), params->id, launch_type); | 740 delegate->SetLaunchType(browser_context(), params->id, launch_type); |
| 762 | 741 |
| 763 return true; | 742 return RespondNow(NoArguments()); |
| 764 } | 743 } |
| 765 | 744 |
| 766 ManagementGenerateAppForLinkFunction::ManagementGenerateAppForLinkFunction() { | 745 ManagementGenerateAppForLinkFunction::ManagementGenerateAppForLinkFunction() { |
| 767 } | 746 } |
| 768 | 747 |
| 769 ManagementGenerateAppForLinkFunction::~ManagementGenerateAppForLinkFunction() { | 748 ManagementGenerateAppForLinkFunction::~ManagementGenerateAppForLinkFunction() { |
| 770 } | 749 } |
| 771 | 750 |
| 772 void ManagementGenerateAppForLinkFunction::FinishCreateBookmarkApp( | 751 void ManagementGenerateAppForLinkFunction::FinishCreateBookmarkApp( |
| 773 const Extension* extension, | 752 const Extension* extension, |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 903 ManagementAPI::GetFactoryInstance() { | 882 ManagementAPI::GetFactoryInstance() { |
| 904 return g_factory.Pointer(); | 883 return g_factory.Pointer(); |
| 905 } | 884 } |
| 906 | 885 |
| 907 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { | 886 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { |
| 908 management_event_router_.reset(new ManagementEventRouter(browser_context_)); | 887 management_event_router_.reset(new ManagementEventRouter(browser_context_)); |
| 909 EventRouter::Get(browser_context_)->UnregisterObserver(this); | 888 EventRouter::Get(browser_context_)->UnregisterObserver(this); |
| 910 } | 889 } |
| 911 | 890 |
| 912 } // namespace extensions | 891 } // namespace extensions |
| OLD | NEW |