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 |