diff options
39 files changed, 242 insertions, 151 deletions
diff --git a/athena/extensions/chrome/extensions_delegate_impl.cc b/athena/extensions/chrome/extensions_delegate_impl.cc index feedc8e..2678f35 100644 --- a/athena/extensions/chrome/extensions_delegate_impl.cc +++ b/athena/extensions/chrome/extensions_delegate_impl.cc @@ -11,6 +11,7 @@ #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_util.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" #include "extensions/browser/extension_registry.h" @@ -59,10 +60,9 @@ class ChromeExtensionsDelegate : public ExtensionsDelegate { return false; int event_flags = 0; - AppLaunchParams params(Profile::FromBrowserContext(context), - extension, - event_flags, - chrome::HOST_DESKTOP_TYPE_ASH); + AppLaunchParams params(Profile::FromBrowserContext(context), extension, + event_flags, chrome::HOST_DESKTOP_TYPE_ASH, + extensions::SOURCE_APP_LAUNCHER); // TODO(oshima): rename HOST_DESTOP_TYPE_ASH to non native desktop. if (app_id == extensions::kWebStoreAppId) { diff --git a/chrome/browser/apps/app_browsertest.cc b/chrome/browser/apps/app_browsertest.cc index 9db785e..7d604b4 100644 --- a/chrome/browser/apps/app_browsertest.cc +++ b/chrome/browser/apps/app_browsertest.cc @@ -20,6 +20,7 @@ #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/renderer_context_menu/render_view_context_menu.h" #include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/webui/print_preview/print_preview_ui.h" @@ -42,9 +43,11 @@ #include "extensions/browser/notification_types.h" #include "extensions/browser/pref_names.h" #include "extensions/common/api/app_runtime.h" +#include "extensions/common/constants.h" #include "extensions/test/extension_test_message_listener.h" #include "extensions/test/result_catcher.h" #include "net/test/embedded_test_server/embedded_test_server.h" +#include "ui/base/window_open_disposition.h" #include "url/gurl.h" #if defined(OS_CHROMEOS) @@ -508,8 +511,8 @@ IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, LaunchWithRelativeFile) { ASSERT_TRUE(extension); // Run the test - AppLaunchParams params( - browser()->profile(), extension, LAUNCH_CONTAINER_NONE, NEW_WINDOW); + AppLaunchParams params(browser()->profile(), extension, LAUNCH_CONTAINER_NONE, + NEW_WINDOW, extensions::SOURCE_UNTRACKED); params.command_line = *CommandLine::ForCurrentProcess(); params.current_directory = test_data_dir_; OpenApplication(params); @@ -838,8 +841,9 @@ void PlatformAppDevToolsBrowserTest::RunTestWithDevTools( content::WindowedNotificationObserver app_loaded_observer( content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME, content::NotificationService::AllSources()); - OpenApplication(AppLaunchParams( - browser()->profile(), extension, LAUNCH_CONTAINER_NONE, NEW_WINDOW)); + OpenApplication(AppLaunchParams(browser()->profile(), extension, + LAUNCH_CONTAINER_NONE, NEW_WINDOW, + extensions::SOURCE_UNTRACKED)); app_loaded_observer.Wait(); window = GetFirstAppWindow(); ASSERT_TRUE(window); @@ -983,8 +987,9 @@ IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, ASSERT_TRUE(should_install.seen()); ExtensionTestMessageListener launched_listener("Launched", false); - OpenApplication(AppLaunchParams( - browser()->profile(), extension, LAUNCH_CONTAINER_NONE, NEW_WINDOW)); + OpenApplication(AppLaunchParams(browser()->profile(), extension, + LAUNCH_CONTAINER_NONE, NEW_WINDOW, + extensions::SOURCE_UNTRACKED)); ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); } @@ -1006,8 +1011,9 @@ IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, ASSERT_TRUE(extension); ExtensionTestMessageListener launched_listener("Launched", false); - OpenApplication(AppLaunchParams( - browser()->profile(), extension, LAUNCH_CONTAINER_NONE, NEW_WINDOW)); + OpenApplication(AppLaunchParams(browser()->profile(), extension, + LAUNCH_CONTAINER_NONE, NEW_WINDOW, + extensions::SOURCE_UNTRACKED)); ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); ASSERT_FALSE(should_not_install.seen()); @@ -1043,8 +1049,9 @@ IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, ComponentAppBackgroundPage) { ASSERT_TRUE(should_install.seen()); ExtensionTestMessageListener launched_listener("Launched", false); - OpenApplication(AppLaunchParams( - browser()->profile(), extension, LAUNCH_CONTAINER_NONE, NEW_WINDOW)); + OpenApplication(AppLaunchParams(browser()->profile(), extension, + LAUNCH_CONTAINER_NONE, NEW_WINDOW, + extensions::SOURCE_UNTRACKED)); ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); } @@ -1066,8 +1073,9 @@ IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, { ExtensionTestMessageListener launched_listener("Launched", false); - OpenApplication(AppLaunchParams( - browser()->profile(), extension, LAUNCH_CONTAINER_NONE, NEW_WINDOW)); + OpenApplication(AppLaunchParams(browser()->profile(), extension, + LAUNCH_CONTAINER_NONE, NEW_WINDOW, + extensions::SOURCE_UNTRACKED)); ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); } @@ -1217,8 +1225,9 @@ IN_PROC_BROWSER_TEST_F(PlatformAppIncognitoBrowserTest, IncognitoComponentApp) { ASSERT_TRUE(registry != NULL); registry->AddObserver(this); - OpenApplication(AppLaunchParams( - incognito_profile, file_manager, 0, chrome::HOST_DESKTOP_TYPE_NATIVE)); + OpenApplication(AppLaunchParams(incognito_profile, file_manager, CURRENT_TAB, + chrome::HOST_DESKTOP_TYPE_NATIVE, + extensions::SOURCE_UNTRACKED)); while (!ContainsKey(opener_app_ids_, file_manager->id())) { content::RunAllPendingInMessageLoop(); diff --git a/chrome/browser/apps/app_browsertest_util.cc b/chrome/browser/apps/app_browsertest_util.cc index f8d804ea..169883f 100644 --- a/chrome/browser/apps/app_browsertest_util.cc +++ b/chrome/browser/apps/app_browsertest_util.cc @@ -11,6 +11,7 @@ #include "chrome/browser/extensions/extension_function_test_utils.h" #include "chrome/browser/ui/apps/chrome_app_delegate.h" #include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "content/public/browser/notification_service.h" #include "content/public/test/browser_test_utils.h" @@ -19,6 +20,7 @@ #include "extensions/browser/app_window/app_window_registry.h" #include "extensions/browser/app_window/native_app_window.h" #include "extensions/browser/process_manager.h" +#include "extensions/common/constants.h" #include "extensions/common/switches.h" #include "extensions/test/extension_test_message_listener.h" @@ -112,8 +114,9 @@ const Extension* PlatformAppBrowserTest::InstallAndLaunchPlatformApp( } void PlatformAppBrowserTest::LaunchPlatformApp(const Extension* extension) { - OpenApplication(AppLaunchParams( - browser()->profile(), extension, LAUNCH_CONTAINER_NONE, NEW_WINDOW)); + OpenApplication(AppLaunchParams(browser()->profile(), extension, + LAUNCH_CONTAINER_NONE, NEW_WINDOW, + extensions::SOURCE_UNTRACKED)); } WebContents* PlatformAppBrowserTest::GetFirstAppWindowWebContents() { diff --git a/chrome/browser/apps/app_window_browsertest.cc b/chrome/browser/apps/app_window_browsertest.cc index 12bcbab..4674257 100644 --- a/chrome/browser/apps/app_window_browsertest.cc +++ b/chrome/browser/apps/app_window_browsertest.cc @@ -5,6 +5,7 @@ #include "chrome/browser/apps/app_browsertest_util.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "content/public/browser/notification_service.h" #include "content/public/test/test_utils.h" @@ -216,10 +217,9 @@ IN_PROC_BROWSER_TEST_F(AppWindowAPITest, test_data_dir_.AppendASCII("platform_apps").AppendASCII("window_api")); EXPECT_TRUE(extension); - OpenApplication(AppLaunchParams(browser()->profile(), - extension, - extensions::LAUNCH_CONTAINER_NONE, - NEW_WINDOW)); + OpenApplication(AppLaunchParams(browser()->profile(), extension, + extensions::LAUNCH_CONTAINER_NONE, NEW_WINDOW, + extensions::SOURCE_UNTRACKED)); ExtensionTestMessageListener geometry_listener("ListenGeometryChange", true); diff --git a/chrome/browser/apps/ephemeral_app_launcher.cc b/chrome/browser/apps/ephemeral_app_launcher.cc index a1f516b..643f633 100644 --- a/chrome/browser/apps/ephemeral_app_launcher.cc +++ b/chrome/browser/apps/ephemeral_app_launcher.cc @@ -11,6 +11,7 @@ #include "chrome/browser/extensions/extension_util.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser_navigator.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/browser/ui/extensions/extension_enable_flow.h" #include "chrome/browser/ui/native_window_tracker.h" @@ -22,6 +23,7 @@ #include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" #include "extensions/browser/management_policy.h" +#include "extensions/common/constants.h" #include "extensions/common/permissions/permissions_data.h" using content::WebContents; @@ -279,7 +281,8 @@ void EphemeralAppLauncher::LaunchApp(const Extension* extension) const { ExtensionRegistry::Get(profile()) ->GetExtensionById(extension->id(), ExtensionRegistry::ENABLED)); - AppLaunchParams params(profile(), extension, NEW_FOREGROUND_TAB); + AppLaunchParams params(profile(), extension, NEW_FOREGROUND_TAB, + extensions::SOURCE_EPHEMERAL_APP); params.desktop_type = chrome::GetHostDesktopTypeForNativeWindow(parent_window_); OpenApplication(params); diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/browser/background/background_mode_manager.cc index a6bb71b..b95f598 100644 --- a/chrome/browser/background/background_mode_manager.cc +++ b/chrome/browser/background/background_mode_manager.cc @@ -32,6 +32,7 @@ #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/chrome_pages.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/browser/ui/host_desktop.h" #include "chrome/browser/ui/user_manager.h" @@ -44,6 +45,7 @@ #include "content/public/browser/notification_service.h" #include "content/public/browser/user_metrics.h" #include "extensions/browser/extension_system.h" +#include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "extensions/common/manifest_handlers/options_page_info.h" #include "extensions/common/permissions/permission_set.h" @@ -318,7 +320,8 @@ void BackgroundModeManager::RegisterProfile(Profile* profile) { void BackgroundModeManager::LaunchBackgroundApplication( Profile* profile, const Extension* extension) { - OpenApplication(AppLaunchParams(profile, extension, NEW_FOREGROUND_TAB)); + OpenApplication(AppLaunchParams(profile, extension, NEW_FOREGROUND_TAB, + extensions::SOURCE_BACKGROUND)); } bool BackgroundModeManager::IsBackgroundModeActive() { diff --git a/chrome/browser/chromeos/app_mode/startup_app_launcher.cc b/chrome/browser/chromeos/app_mode/startup_app_launcher.cc index 6a2451e..4bdd7dd 100644 --- a/chrome/browser/chromeos/app_mode/startup_app_launcher.cc +++ b/chrome/browser/chromeos/app_mode/startup_app_launcher.cc @@ -22,6 +22,7 @@ #include "chrome/browser/lifetime/application_lifetime.h" #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" #include "chrome/browser/signin/signin_manager_factory.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_switches.h" @@ -33,6 +34,7 @@ #include "content/public/browser/browser_thread.h" #include "content/public/browser/notification_service.h" #include "extensions/browser/extension_system.h" +#include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "extensions/common/manifest_handlers/kiosk_mode_info.h" #include "extensions/common/manifest_handlers/offline_enabled_info.h" @@ -331,7 +333,7 @@ void StartupAppLauncher::LaunchApp() { // Always open the app in a window. OpenApplication(AppLaunchParams(profile_, extension, extensions::LAUNCH_CONTAINER_WINDOW, - NEW_WINDOW)); + NEW_WINDOW, extensions::SOURCE_KIOSK)); InitAppSession(profile_, app_id_); user_manager::UserManager::Get()->SessionStarted(); diff --git a/chrome/browser/chromeos/extensions/wallpaper_manager_util.cc b/chrome/browser/chromeos/extensions/wallpaper_manager_util.cc index da40b7a..46ed021 100644 --- a/chrome/browser/chromeos/extensions/wallpaper_manager_util.cc +++ b/chrome/browser/chromeos/extensions/wallpaper_manager_util.cc @@ -8,9 +8,11 @@ #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/common/extensions/extension_constants.h" #include "extensions/browser/extension_system.h" +#include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "ui/base/window_open_disposition.h" @@ -30,9 +32,9 @@ void OpenWallpaperManager() { if (!extension) return; - OpenApplication(AppLaunchParams(profile, extension, - extensions::LAUNCH_CONTAINER_WINDOW, - NEW_WINDOW)); + OpenApplication( + AppLaunchParams(profile, extension, extensions::LAUNCH_CONTAINER_WINDOW, + NEW_WINDOW, extensions::SOURCE_CHROME_INTERNAL)); } } // namespace wallpaper_manager_util diff --git a/chrome/browser/chromeos/first_run/first_run.cc b/chrome/browser/chromeos/first_run/first_run.cc index b9c7947..b4af283 100644 --- a/chrome/browser/chromeos/first_run/first_run.cc +++ b/chrome/browser/chromeos/first_run/first_run.cc @@ -11,6 +11,7 @@ #include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/profiles/profile_manager.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/extensions/extension_constants.h" @@ -40,8 +41,9 @@ void LaunchDialogForProfile(Profile* profile) { if (!extension) return; - OpenApplication(AppLaunchParams( - profile, extension, extensions::LAUNCH_CONTAINER_WINDOW, NEW_WINDOW)); + OpenApplication( + AppLaunchParams(profile, extension, extensions::LAUNCH_CONTAINER_WINDOW, + NEW_WINDOW, extensions::SOURCE_CHROME_INTERNAL)); profile->GetPrefs()->SetBoolean(prefs::kFirstRunTutorialShown, true); } diff --git a/chrome/browser/chromeos/login/demo_mode/demo_app_launcher.cc b/chrome/browser/chromeos/login/demo_mode/demo_app_launcher.cc index 466638f..6be11b8 100644 --- a/chrome/browser/chromeos/login/demo_mode/demo_app_launcher.cc +++ b/chrome/browser/chromeos/login/demo_mode/demo_app_launcher.cc @@ -14,6 +14,7 @@ #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/lifetime/application_lifetime.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/extensions/extension_constants.h" @@ -22,6 +23,7 @@ #include "chromeos/network/network_state_handler.h" #include "components/user_manager/user_manager.h" #include "extensions/browser/extension_system.h" +#include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "ui/base/window_open_disposition.h" @@ -92,8 +94,9 @@ void DemoAppLauncher::OnProfileLoaded(Profile* profile) { false, chromeos::network_handler::ErrorCallback()); - OpenApplication(AppLaunchParams( - profile, extension, extensions::LAUNCH_CONTAINER_WINDOW, NEW_WINDOW)); + OpenApplication( + AppLaunchParams(profile, extension, extensions::LAUNCH_CONTAINER_WINDOW, + NEW_WINDOW, extensions::SOURCE_CHROME_INTERNAL)); InitAppSession(profile, extension_id); user_manager::UserManager::Get()->SessionStarted(); diff --git a/chrome/browser/chromeos/policy/device_local_account_browsertest.cc b/chrome/browser/chromeos/policy/device_local_account_browsertest.cc index 427ee0f..f751f72 100644 --- a/chrome/browser/chromeos/policy/device_local_account_browsertest.cc +++ b/chrome/browser/chromeos/policy/device_local_account_browsertest.cc @@ -74,6 +74,7 @@ #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/browser_list_observer.h" #include "chrome/browser/ui/browser_window.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/browser/ui/host_desktop.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" @@ -119,6 +120,7 @@ #include "extensions/browser/extension_system.h" #include "extensions/browser/management_policy.h" #include "extensions/browser/notification_types.h" +#include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "net/base/url_util.h" #include "net/http/http_status_code.h" @@ -1325,8 +1327,9 @@ IN_PROC_BROWSER_TEST_F(DeviceLocalAccountTest, LastWindowClosedLogoutReminder) { // Start the platform app, causing it to open a window. run_loop_.reset(new base::RunLoop); - OpenApplication(AppLaunchParams( - profile, app, extensions::LAUNCH_CONTAINER_NONE, NEW_WINDOW)); + OpenApplication(AppLaunchParams(profile, app, + extensions::LAUNCH_CONTAINER_NONE, NEW_WINDOW, + extensions::SOURCE_UNTRACKED)); run_loop_->Run(); EXPECT_EQ(1U, app_window_registry->app_windows().size()); diff --git a/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc b/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc index a375d5f..8817775 100644 --- a/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc +++ b/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc @@ -242,9 +242,9 @@ bool ChromeManagementAPIDelegate::LaunchAppFunctionDelegate( // returned. extensions::LaunchContainer launch_container = GetLaunchContainer(extensions::ExtensionPrefs::Get(context), extension); - OpenApplication(AppLaunchParams(Profile::FromBrowserContext(context), - extension, launch_container, - NEW_FOREGROUND_TAB)); + OpenApplication(AppLaunchParams( + Profile::FromBrowserContext(context), extension, launch_container, + NEW_FOREGROUND_TAB, extensions::SOURCE_MANAGEMENT_API)); extensions::RecordAppLaunchType(extension_misc::APP_LAUNCH_EXTENSION_API, extension->GetType()); diff --git a/chrome/browser/extensions/api/media_galleries/media_galleries_apitest.cc b/chrome/browser/extensions/api/media_galleries/media_galleries_apitest.cc index e338991..b531f2b 100644 --- a/chrome/browser/extensions/api/media_galleries/media_galleries_apitest.cc +++ b/chrome/browser/extensions/api/media_galleries/media_galleries_apitest.cc @@ -21,12 +21,15 @@ #include "chrome/browser/media_galleries/media_galleries_scan_result_controller.h" #include "chrome/browser/media_galleries/media_galleries_test_util.h" #include "chrome/browser/media_galleries/media_scan_manager.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" +#include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/common/chrome_paths.h" #include "components/storage_monitor/storage_info.h" #include "components/storage_monitor/storage_monitor.h" #include "content/public/browser/web_contents.h" #include "content/public/test/test_utils.h" #include "extensions/browser/extension_system.h" +#include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "extensions/test/result_catcher.h" #include "media/base/test_data_util.h" @@ -470,10 +473,9 @@ IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppPpapiTest, SendFilesystem) { ASSERT_TRUE(extension); extensions::ResultCatcher catcher; - AppLaunchParams params(browser()->profile(), - extension, - extensions::LAUNCH_CONTAINER_NONE, - NEW_WINDOW); + AppLaunchParams params(browser()->profile(), extension, + extensions::LAUNCH_CONTAINER_NONE, NEW_WINDOW, + extensions::SOURCE_UNTRACKED); params.command_line = *CommandLine::ForCurrentProcess(); OpenApplication(params); diff --git a/chrome/browser/extensions/extension_apitest.cc b/chrome/browser/extensions/extension_apitest.cc index ecf88fd..d8c696f 100644 --- a/chrome/browser/extensions/extension_apitest.cc +++ b/chrome/browser/extensions/extension_apitest.cc @@ -11,11 +11,13 @@ #include "chrome/browser/extensions/unpacked_installer.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/test/base/ui_test_utils.h" #include "extensions/browser/api/test/test_api.h" #include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" +#include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "extensions/common/extension_set.h" #include "extensions/test/result_catcher.h" @@ -308,10 +310,9 @@ bool ExtensionApiTest::RunExtensionTestImpl(const std::string& extension_name, else ui_test_utils::NavigateToURL(browser(), url); } else if (launch_platform_app) { - AppLaunchParams params(browser()->profile(), - extension, - extensions::LAUNCH_CONTAINER_NONE, - NEW_WINDOW); + AppLaunchParams params(browser()->profile(), extension, + extensions::LAUNCH_CONTAINER_NONE, NEW_WINDOW, + extensions::SOURCE_UNTRACKED); params.command_line = *CommandLine::ForCurrentProcess(); OpenApplication(params); } diff --git a/chrome/browser/extensions/extension_storage_monitor_browsertest.cc b/chrome/browser/extensions/extension_storage_monitor_browsertest.cc index d2a3966..b96930a 100644 --- a/chrome/browser/extensions/extension_storage_monitor_browsertest.cc +++ b/chrome/browser/extensions/extension_storage_monitor_browsertest.cc @@ -9,12 +9,14 @@ #include "chrome/browser/extensions/extension_browsertest.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_storage_monitor.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "content/public/test/test_utils.h" #include "extensions/browser/extension_prefs.h" #include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" #include "extensions/browser/test_extension_registry_observer.h" +#include "extensions/common/constants.h" #include "extensions/test/extension_test_message_listener.h" #include "ui/message_center/message_center.h" #include "ui/message_center/message_center_observer.h" @@ -179,8 +181,8 @@ class ExtensionStorageMonitorTest : public ExtensionBrowserTest { NotificationObserver notification_observer( GetNotificationId(extension->id())); - OpenApplication(AppLaunchParams( - profile(), extension, LAUNCH_CONTAINER_NONE, NEW_WINDOW)); + OpenApplication(AppLaunchParams(profile(), extension, LAUNCH_CONTAINER_NONE, + NEW_WINDOW, extensions::SOURCE_UNTRACKED)); ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); // Instruct the app to write |num_bytes| of data. diff --git a/chrome/browser/policy/policy_browsertest.cc b/chrome/browser/policy/policy_browsertest.cc index 939d360..f450b7c 100644 --- a/chrome/browser/policy/policy_browsertest.cc +++ b/chrome/browser/policy/policy_browsertest.cc @@ -69,6 +69,8 @@ #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/browser_tabstrip.h" #include "chrome/browser/ui/browser_window.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" +#include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/browser/ui/host_desktop.h" #include "chrome/browser/ui/location_bar/location_bar.h" #include "chrome/browser/ui/omnibox/omnibox_edit_model.h" @@ -2435,10 +2437,9 @@ IN_PROC_BROWSER_TEST_F(PolicyTest, FullscreenAllowedApp) { // Launch an app that tries to open a fullscreen window. TestAddAppWindowObserver add_window_observer( extensions::AppWindowRegistry::Get(browser()->profile())); - OpenApplication(AppLaunchParams(browser()->profile(), - extension, - extensions::LAUNCH_CONTAINER_NONE, - NEW_WINDOW)); + OpenApplication(AppLaunchParams(browser()->profile(), extension, + extensions::LAUNCH_CONTAINER_NONE, NEW_WINDOW, + extensions::SOURCE_UNTRACKED)); extensions::AppWindow* window = add_window_observer.WaitForAppWindow(); ASSERT_TRUE(window); diff --git a/chrome/browser/search/hotword_service.cc b/chrome/browser/search/hotword_service.cc index 64e7430..76b15165d 100644 --- a/chrome/browser/search/hotword_service.cc +++ b/chrome/browser/search/hotword_service.cc @@ -21,6 +21,7 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/search/hotword_audio_history_handler.h" #include "chrome/browser/search/hotword_service_factory.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_switches.h" @@ -33,6 +34,7 @@ #include "content/public/common/webplugininfo.h" #include "extensions/browser/extension_system.h" #include "extensions/browser/uninstall_reason.h" +#include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "extensions/common/one_shot_event.h" #include "ui/base/l10n/l10n_util.h" @@ -487,8 +489,9 @@ void HotwordService::LaunchHotwordAudioVerificationApp( if (!extension) return; - OpenApplication(AppLaunchParams( - profile_, extension, extensions::LAUNCH_CONTAINER_WINDOW, NEW_WINDOW)); + OpenApplication( + AppLaunchParams(profile_, extension, extensions::LAUNCH_CONTAINER_WINDOW, + NEW_WINDOW, extensions::SOURCE_CHROME_INTERNAL)); } HotwordService::LaunchMode diff --git a/chrome/browser/signin/easy_unlock_service_regular.cc b/chrome/browser/signin/easy_unlock_service_regular.cc index 7da3557..6b91471 100644 --- a/chrome/browser/signin/easy_unlock_service_regular.cc +++ b/chrome/browser/signin/easy_unlock_service_regular.cc @@ -14,12 +14,14 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/signin/easy_unlock_toggle_flow.h" #include "chrome/browser/signin/screenlock_bridge.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/common/extensions/extension_constants.h" #include "chrome/common/pref_names.h" #include "components/pref_registry/pref_registry_syncable.h" #include "content/public/browser/browser_thread.h" #include "extensions/browser/extension_system.h" +#include "extensions/common/constants.h" #if defined(OS_CHROMEOS) #include "apps/app_lifetime_monitor_factory.h" @@ -113,8 +115,9 @@ void EasyUnlockServiceRegular::OpenSetupApp() { const extensions::Extension* extension = service->GetExtensionById(extension_misc::kEasyUnlockAppId, false); - OpenApplication(AppLaunchParams( - profile(), extension, extensions::LAUNCH_CONTAINER_WINDOW, NEW_WINDOW)); + OpenApplication( + AppLaunchParams(profile(), extension, extensions::LAUNCH_CONTAINER_WINDOW, + NEW_WINDOW, extensions::SOURCE_CHROME_INTERNAL)); } const base::DictionaryValue* EasyUnlockServiceRegular::GetPermitAccess() const { diff --git a/chrome/browser/ui/app_list/app_list_controller_delegate_impl.cc b/chrome/browser/ui/app_list/app_list_controller_delegate_impl.cc index 98116d2..61b4542 100644 --- a/chrome/browser/ui/app_list/app_list_controller_delegate_impl.cc +++ b/chrome/browser/ui/app_list/app_list_controller_delegate_impl.cc @@ -11,6 +11,7 @@ #include "chrome/browser/ui/browser_commands.h" #include "chrome/browser/ui/browser_dialogs.h" #include "chrome/browser/ui/browser_navigator.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" #include "extensions/browser/extension_system.h" @@ -111,7 +112,8 @@ void AppListControllerDelegateImpl::LaunchApp( int event_flags) { AppListServiceImpl::RecordAppListAppLaunch(); - AppLaunchParams params(profile, extension, NEW_FOREGROUND_TAB); + AppLaunchParams params(profile, extension, NEW_FOREGROUND_TAB, + extensions::SOURCE_APP_LAUNCHER); if (source != LAUNCH_FROM_UNKNOWN && extension->id() == extensions::kWebStoreAppId) { @@ -122,7 +124,6 @@ void AppListControllerDelegateImpl::LaunchApp( extension_urls::kWebstoreSourceField, AppListSourceToString(source)); } - params.source = extensions::SOURCE_APP_LAUNCHER; FillLaunchParams(¶ms); OpenApplication(params); diff --git a/chrome/browser/ui/ash/chrome_new_window_delegate_chromeos.cc b/chrome/browser/ui/ash/chrome_new_window_delegate_chromeos.cc index f616847..56d7d24 100644 --- a/chrome/browser/ui/ash/chrome_new_window_delegate_chromeos.cc +++ b/chrome/browser/ui/ash/chrome_new_window_delegate_chromeos.cc @@ -12,12 +12,15 @@ #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" #include "chrome/browser/ui/webui/chrome_web_contents_handler.h" #include "chrome/common/url_constants.h" #include "content/public/browser/web_contents.h" #include "extensions/browser/extension_system.h" +#include "extensions/common/constants.h" +#include "ui/base/window_open_disposition.h" ChromeNewWindowDelegateChromeos::ChromeNewWindowDelegateChromeos() {} ChromeNewWindowDelegateChromeos::~ChromeNewWindowDelegateChromeos() {} @@ -35,12 +38,9 @@ void ChromeNewWindowDelegateChromeos::OpenFileManager() { const extensions::Extension* const extension = service->GetInstalledExtension(kFileManagerAppId); - // event_flags = 0 means this invokes the same behavior as the launcher - // item is clicked without any keyboard modifiers. - OpenApplication(AppLaunchParams(profile, - extension, - 0 /* event_flags */, - chrome::HOST_DESKTOP_TYPE_ASH)); + OpenApplication(AppLaunchParams(profile, extension, CURRENT_TAB, + chrome::HOST_DESKTOP_TYPE_ASH, + extensions::SOURCE_CHROME_INTERNAL)); } void ChromeNewWindowDelegateChromeos::OpenCrosh() { diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc index 0d81c8f..04a1109 100644 --- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc +++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc @@ -56,6 +56,7 @@ #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/browser_tabstrip.h" #include "chrome/browser/ui/browser_window.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/browser/ui/extensions/extension_enable_flow.h" #include "chrome/browser/ui/host_desktop.h" @@ -85,6 +86,7 @@ #include "ui/aura/window.h" #include "ui/aura/window_event_dispatcher.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/base/window_open_disposition.h" #include "ui/keyboard/keyboard_util.h" #include "ui/resources/grit/ui_resources.h" #include "ui/wm/core/window_animations.h" @@ -734,10 +736,9 @@ void ChromeLauncherController::LaunchApp(const std::string& app_id, #endif // The app will be created for the currently active profile. - AppLaunchParams params(profile_, - extension, - event_flags, - chrome::HOST_DESKTOP_TYPE_ASH); + AppLaunchParams params( + profile_, extension, ui::DispositionFromEventFlags(event_flags), + chrome::HOST_DESKTOP_TYPE_ASH, extensions::SOURCE_APP_LAUNCHER); if (source != ash::LAUNCH_FROM_UNKNOWN && app_id == extensions::kWebStoreAppId) { // Get the corresponding source string. @@ -749,10 +750,6 @@ void ChromeLauncherController::LaunchApp(const std::string& app_id, extension_url, extension_urls::kWebstoreSourceField, source_value); } - params.source = (source == ash::LAUNCH_FROM_UNKNOWN) - ? extensions::SOURCE_UNTRACKED - : extensions::SOURCE_APP_LAUNCHER; - OpenApplication(params); } diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc index cd53877..fa4e167 100644 --- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc +++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc @@ -38,6 +38,7 @@ #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/chrome_pages.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/browser/ui/host_desktop.h" #include "chrome/browser/ui/settings_window_manager.h" @@ -60,6 +61,7 @@ #include "ui/app_list/views/apps_grid_view.h" #include "ui/aura/client/aura_constants.h" #include "ui/aura/window.h" +#include "ui/base/window_open_disposition.h" #include "ui/events/event.h" #include "ui/events/test/event_generator.h" @@ -220,10 +222,8 @@ class ShelfAppBrowserTest : public ExtensionBrowserTest { service->GetExtensionById(last_loaded_extension_id(), false); EXPECT_TRUE(extension); - OpenApplication(AppLaunchParams(profile(), - extension, - container, - disposition)); + OpenApplication(AppLaunchParams(profile(), extension, container, + disposition, extensions::SOURCE_UNTRACKED)); return extension; } @@ -2078,10 +2078,8 @@ IN_PROC_BROWSER_TEST_F(ShelfAppBrowserTest, V1AppNavigation) { // Create a windowed application. AppLaunchParams params( - profile(), - controller_->GetExtensionForAppID(extensions::kWebStoreAppId), - 0, - chrome::HOST_DESKTOP_TYPE_ASH); + profile(), controller_->GetExtensionForAppID(extensions::kWebStoreAppId), + CURRENT_TAB, chrome::HOST_DESKTOP_TYPE_ASH, extensions::SOURCE_UNTRACKED); params.container = extensions::LAUNCH_CONTAINER_WINDOW; OpenApplication(params); EXPECT_EQ(ash::STATUS_ACTIVE, model_->ItemByID(id)->status); diff --git a/chrome/browser/ui/browser_browsertest.cc b/chrome/browser/ui/browser_browsertest.cc index c7e91e18..cb1a8da 100644 --- a/chrome/browser/ui/browser_browsertest.cc +++ b/chrome/browser/ui/browser_browsertest.cc @@ -40,6 +40,7 @@ #include "chrome/browser/ui/browser_tabstrip.h" #include "chrome/browser/ui/browser_ui_prefs.h" #include "chrome/browser/ui/browser_window.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/browser/ui/host_desktop.h" #include "chrome/browser/ui/startup/startup_browser_creator.h" @@ -84,6 +85,7 @@ #include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" #include "extensions/browser/uninstall_reason.h" +#include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "extensions/common/extension_set.h" #include "net/dns/mock_host_resolver.h" @@ -1342,11 +1344,9 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, ShouldShowLocationBar) { const Extension* extension_app = GetExtension(); // Launch it in a window, as AppLauncherHandler::HandleLaunchApp() would. - WebContents* app_window = - OpenApplication(AppLaunchParams(browser()->profile(), - extension_app, - extensions::LAUNCH_CONTAINER_WINDOW, - NEW_WINDOW)); + WebContents* app_window = OpenApplication(AppLaunchParams( + browser()->profile(), extension_app, extensions::LAUNCH_CONTAINER_WINDOW, + NEW_WINDOW, extensions::SOURCE_UNTRACKED)); ASSERT_TRUE(app_window); DevToolsWindow* devtools_window = @@ -1536,9 +1536,9 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, OpenAppWindowLikeNtp) { const Extension* extension_app = GetExtension(); // Launch it in a window, as AppLauncherHandler::HandleLaunchApp() would. - WebContents* app_window = OpenApplication( - AppLaunchParams(browser()->profile(), extension_app, - extensions::LAUNCH_CONTAINER_WINDOW, NEW_WINDOW)); + WebContents* app_window = OpenApplication(AppLaunchParams( + browser()->profile(), extension_app, extensions::LAUNCH_CONTAINER_WINDOW, + NEW_WINDOW, extensions::SOURCE_UNTRACKED)); ASSERT_TRUE(app_window); // Apps launched in a window from the NTP have an extensions tab helper but diff --git a/chrome/browser/ui/chrome_pages.cc b/chrome/browser/ui/chrome_pages.cc index f0b002e..ccfbac4 100644 --- a/chrome/browser/ui/chrome_pages.cc +++ b/chrome/browser/ui/chrome_pages.cc @@ -15,6 +15,7 @@ #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_navigator.h" #include "chrome/browser/ui/browser_window.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" #include "chrome/browser/ui/settings_window_manager.h" @@ -25,8 +26,10 @@ #include "chrome/common/url_constants.h" #include "content/public/browser/user_metrics.h" #include "content/public/browser/web_contents.h" +#include "extensions/common/constants.h" #include "google_apis/gaia/gaia_urls.h" #include "net/base/url_util.h" +#include "ui/base/window_open_disposition.h" #if defined(OS_WIN) #include "chrome/browser/enumerate_modules_model_win.h" @@ -82,18 +85,22 @@ void ShowHelpImpl(Browser* browser, extensions::ExtensionRegistry::Get(profile)->GetExtensionById( genius_app::kGeniusAppId, extensions::ExtensionRegistry::EVERYTHING); - AppLaunchParams params(profile, extension, 0, host_desktop_type); + extensions::AppLaunchSource app_launch_source(extensions::SOURCE_UNTRACKED); switch (source) { case HELP_SOURCE_KEYBOARD: - params.source = extensions::SOURCE_KEYBOARD; + app_launch_source = extensions::SOURCE_KEYBOARD; break; case HELP_SOURCE_MENU: - params.source = extensions::SOURCE_SYSTEM_TRAY; + app_launch_source = extensions::SOURCE_SYSTEM_TRAY; break; case HELP_SOURCE_WEBUI: - params.source = extensions::SOURCE_ABOUT_PAGE; + app_launch_source = extensions::SOURCE_ABOUT_PAGE; break; + default: + NOTREACHED() << "Unhandled help source" << source; } + AppLaunchParams params(profile, extension, CURRENT_TAB, host_desktop_type, + app_launch_source); OpenApplication(params); #else GURL url; diff --git a/chrome/browser/ui/cocoa/apps/native_app_window_cocoa_browsertest.mm b/chrome/browser/ui/cocoa/apps/native_app_window_cocoa_browsertest.mm index cc88c56..6d6be23 100644 --- a/chrome/browser/ui/cocoa/apps/native_app_window_cocoa_browsertest.mm +++ b/chrome/browser/ui/cocoa/apps/native_app_window_cocoa_browsertest.mm @@ -10,10 +10,12 @@ #include "base/mac/sdk_forward_declarations.h" #include "chrome/browser/apps/app_browsertest_util.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "content/public/browser/notification_service.h" #include "content/public/test/test_utils.h" #include "extensions/browser/app_window/app_window_registry.h" +#include "extensions/common/constants.h" using extensions::PlatformAppBrowserTest; @@ -33,10 +35,8 @@ class NativeAppWindowCocoaBrowserTest : public PlatformAppBrowserTest { content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME, content::NotificationService::AllSources()); OpenApplication( - AppLaunchParams(profile(), - app_, - extensions::LAUNCH_CONTAINER_NONE, - NEW_WINDOW)); + AppLaunchParams(profile(), app_, extensions::LAUNCH_CONTAINER_NONE, + NEW_WINDOW, extensions::SOURCE_UNTRACKED)); app_loaded_observer.Wait(); } } diff --git a/chrome/browser/ui/extensions/app_launch_params.cc b/chrome/browser/ui/extensions/app_launch_params.cc index fdb6a9f..883ce47 100644 --- a/chrome/browser/ui/extensions/app_launch_params.cc +++ b/chrome/browser/ui/extensions/app_launch_params.cc @@ -7,14 +7,17 @@ #include "chrome/browser/extensions/launch_util.h" #include "chrome/browser/profiles/profile.h" #include "extensions/browser/extension_prefs.h" +#include "extensions/common/constants.h" #include "extensions/common/extension.h" +#include "ui/base/window_open_disposition.h" using extensions::ExtensionPrefs; AppLaunchParams::AppLaunchParams(Profile* profile, const extensions::Extension* extension, extensions::LaunchContainer container, - WindowOpenDisposition disposition) + WindowOpenDisposition disposition, + extensions::AppLaunchSource source) : profile(profile), extension_id(extension ? extension->id() : std::string()), container(container), @@ -23,12 +26,13 @@ AppLaunchParams::AppLaunchParams(Profile* profile, override_url(), override_bounds(), command_line(CommandLine::NO_PROGRAM), - source(extensions::SOURCE_UNTRACKED) { + source(source) { } AppLaunchParams::AppLaunchParams(Profile* profile, const extensions::Extension* extension, - WindowOpenDisposition disposition) + WindowOpenDisposition disposition, + extensions::AppLaunchSource source) : profile(profile), extension_id(extension ? extension->id() : std::string()), container(extensions::LAUNCH_CONTAINER_NONE), @@ -37,7 +41,7 @@ AppLaunchParams::AppLaunchParams(Profile* profile, override_url(), override_bounds(), command_line(CommandLine::NO_PROGRAM), - source(extensions::SOURCE_UNTRACKED) { + source(source) { // Look up the app preference to find out the right launch container. Default // is to launch as a regular tab. container = @@ -46,21 +50,24 @@ AppLaunchParams::AppLaunchParams(Profile* profile, AppLaunchParams::AppLaunchParams(Profile* profile, const extensions::Extension* extension, - int event_flags, - chrome::HostDesktopType desktop_type) + WindowOpenDisposition raw_disposition, + chrome::HostDesktopType desktop_type, + extensions::AppLaunchSource source) : profile(profile), extension_id(extension ? extension->id() : std::string()), container(extensions::LAUNCH_CONTAINER_NONE), - disposition(ui::DispositionFromEventFlags(event_flags)), desktop_type(desktop_type), override_url(), override_bounds(), command_line(CommandLine::NO_PROGRAM), - source(extensions::SOURCE_UNTRACKED) { - if (disposition == NEW_FOREGROUND_TAB || disposition == NEW_BACKGROUND_TAB) { + source(source) { + if (raw_disposition == NEW_FOREGROUND_TAB || + raw_disposition == NEW_BACKGROUND_TAB) { container = extensions::LAUNCH_CONTAINER_TAB; - } else if (disposition == NEW_WINDOW) { + disposition = raw_disposition; + } else if (raw_disposition == NEW_WINDOW) { container = extensions::LAUNCH_CONTAINER_WINDOW; + disposition = raw_disposition; } else { // Look at preference to find the right launch container. If no preference // is set, launch as a regular tab. diff --git a/chrome/browser/ui/extensions/app_launch_params.h b/chrome/browser/ui/extensions/app_launch_params.h index a65ed75..5b66cec 100644 --- a/chrome/browser/ui/extensions/app_launch_params.h +++ b/chrome/browser/ui/extensions/app_launch_params.h @@ -26,13 +26,15 @@ struct AppLaunchParams { AppLaunchParams(Profile* profile, const extensions::Extension* extension, extensions::LaunchContainer container, - WindowOpenDisposition disposition); + WindowOpenDisposition disposition, + extensions::AppLaunchSource source); // Helper to create AppLaunchParams using extensions::GetLaunchContainer with // LAUNCH_TYPE_REGULAR to check for a user-configured container. AppLaunchParams(Profile* profile, const extensions::Extension* extension, - WindowOpenDisposition disposition); + WindowOpenDisposition disposition, + extensions::AppLaunchSource source); // Helper to create AppLaunchParams using event flags that allows user to // override the user-configured container using modifier keys, falling back to @@ -40,8 +42,9 @@ struct AppLaunchParams { // indicates the desktop upon which to launch (Ash or Native). AppLaunchParams(Profile* profile, const extensions::Extension* extension, - int event_flags, - chrome::HostDesktopType desktop_type); + WindowOpenDisposition disposition, + chrome::HostDesktopType desktop_type, + extensions::AppLaunchSource source); ~AppLaunchParams(); diff --git a/chrome/browser/ui/extensions/application_launch.cc b/chrome/browser/ui/extensions/application_launch.cc index af6d038..fb6799d 100644 --- a/chrome/browser/ui/extensions/application_launch.cc +++ b/chrome/browser/ui/extensions/application_launch.cc @@ -24,6 +24,7 @@ #include "extensions/browser/extension_prefs.h" #include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" +#include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "extensions/common/features/feature.h" #include "extensions/common/features/feature_provider.h" @@ -220,11 +221,10 @@ void OpenApplicationWithReenablePrompt(const AppLaunchParams& params) { WebContents* OpenAppShortcutWindow(Profile* profile, const GURL& url) { - AppLaunchParams launch_params( - profile, - NULL, // this is a URL app. No extension. - extensions::LAUNCH_CONTAINER_WINDOW, - NEW_WINDOW); + AppLaunchParams launch_params(profile, + NULL, // this is a URL app. No extension. + extensions::LAUNCH_CONTAINER_WINDOW, NEW_WINDOW, + extensions::SOURCE_COMMAND_LINE); launch_params.override_url = url; WebContents* tab = OpenWebAppWindow(launch_params, url); diff --git a/chrome/browser/ui/startup/startup_browser_creator_impl.cc b/chrome/browser/ui/startup/startup_browser_creator_impl.cc index 6abbea5..266e6a7 100644 --- a/chrome/browser/ui/startup/startup_browser_creator_impl.cc +++ b/chrome/browser/ui/startup/startup_browser_creator_impl.cc @@ -57,6 +57,7 @@ #include "chrome/browser/ui/browser_tabrestore.h" #include "chrome/browser/ui/browser_tabstrip.h" #include "chrome/browser/ui/browser_window.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/browser/ui/host_desktop.h" #include "chrome/browser/ui/startup/autolaunch_prompt.h" @@ -336,7 +337,8 @@ bool StartupBrowserCreatorImpl::Launch(Profile* profile, if (extension) { RecordCmdLineAppHistogram(extensions::Manifest::TYPE_PLATFORM_APP); AppLaunchParams params(profile, extension, - extensions::LAUNCH_CONTAINER_NONE, NEW_WINDOW); + extensions::LAUNCH_CONTAINER_NONE, NEW_WINDOW, + extensions::SOURCE_COMMAND_LINE); params.command_line = command_line_; params.current_directory = cur_dir_; // If we are being launched from the command line, default to native @@ -424,9 +426,9 @@ bool StartupBrowserCreatorImpl::OpenApplicationTab(Profile* profile) { RecordCmdLineAppHistogram(extension->GetType()); - WebContents* app_tab = OpenApplication(AppLaunchParams( - profile, extension, extensions::LAUNCH_CONTAINER_TAB, - NEW_FOREGROUND_TAB)); + WebContents* app_tab = OpenApplication( + AppLaunchParams(profile, extension, extensions::LAUNCH_CONTAINER_TAB, + NEW_FOREGROUND_TAB, extensions::SOURCE_COMMAND_LINE)); return (app_tab != NULL); } @@ -460,7 +462,8 @@ bool StartupBrowserCreatorImpl::OpenApplicationWindow( RecordCmdLineAppHistogram(extension->GetType()); - AppLaunchParams params(profile, extension, launch_container, NEW_WINDOW); + AppLaunchParams params(profile, extension, launch_container, NEW_WINDOW, + extensions::SOURCE_COMMAND_LINE); params.command_line = command_line_; params.current_directory = cur_dir_; WebContents* tab_in_app_window = OpenApplication(params); diff --git a/chrome/browser/ui/views/frame/browser_window_property_manager_browsertest_win.cc b/chrome/browser/ui/views/frame/browser_window_property_manager_browsertest_win.cc index 4e23d74..942d8b1 100644 --- a/chrome/browser/ui/views/frame/browser_window_property_manager_browsertest_win.cc +++ b/chrome/browser/ui/views/frame/browser_window_property_manager_browsertest_win.cc @@ -25,6 +25,7 @@ #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_iterator.h" #include "chrome/browser/ui/browser_window.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/browser/web_applications/web_app.h" #include "chrome/browser/web_applications/web_app_win.h" @@ -34,6 +35,7 @@ #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/test_switches.h" #include "content/public/test/test_utils.h" +#include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "ui/views/win/hwnd_util.h" @@ -242,10 +244,9 @@ IN_PROC_BROWSER_TEST_F(BrowserWindowPropertyManagerTest, DISABLED_HostedApp) { LoadExtension(test_data_dir_.AppendASCII("app/")); EXPECT_TRUE(extension); - OpenApplication(AppLaunchParams(browser()->profile(), - extension, - extensions::LAUNCH_CONTAINER_WINDOW, - NEW_FOREGROUND_TAB)); + OpenApplication(AppLaunchParams( + browser()->profile(), extension, extensions::LAUNCH_CONTAINER_WINDOW, + NEW_FOREGROUND_TAB, extensions::SOURCE_UNTRACKED)); // Check that the new browser has an app name. // The launch should have created a new browser. diff --git a/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc index b25aa16..add8c88 100644 --- a/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc @@ -15,6 +15,7 @@ #include "chrome/browser/extensions/component_loader.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/profiles/profile_manager.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/browser/ui/webui/chromeos/login/native_window_delegate.h" #include "chrome/browser/ui/webui/chromeos/login/network_state_informer.h" @@ -28,6 +29,7 @@ #include "chromeos/network/portal_detector/network_portal_detector_strategy.h" #include "components/user_manager/user_manager.h" #include "extensions/browser/extension_system.h" +#include "extensions/common/constants.h" #include "grit/browser_resources.h" #include "ui/strings/grit/ui_strings.h" @@ -218,9 +220,9 @@ void ErrorScreenHandler::HandleDiagnoseButtonClicked() { const extensions::Extension* extension = extension_service-> GetExtensionById(extension_id, true); - OpenApplication(AppLaunchParams(profile, extension, - extensions::LAUNCH_CONTAINER_WINDOW, - NEW_WINDOW)); + OpenApplication( + AppLaunchParams(profile, extension, extensions::LAUNCH_CONTAINER_WINDOW, + NEW_WINDOW, extensions::SOURCE_CHROME_INTERNAL)); InitAppSession(profile, extension_id); user_manager::UserManager::Get()->SessionStarted(); diff --git a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc index 1d4b6f7..0c3d3db 100644 --- a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc +++ b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc @@ -49,6 +49,7 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_window.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/browser/ui/webui/extensions/extension_basic_info.h" #include "chrome/browser/ui/webui/extensions/extension_icon_source.h" @@ -1029,7 +1030,8 @@ void ExtensionSettingsHandler::HandleLaunchMessage( extension_service_->GetExtensionById(extension_id, false); OpenApplication(AppLaunchParams(extension_service_->profile(), extension, extensions::LAUNCH_CONTAINER_WINDOW, - NEW_WINDOW)); + NEW_WINDOW, + extensions::SOURCE_EXTENSIONS_PAGE)); } void ExtensionSettingsHandler::HandleReloadMessage( diff --git a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc index 8389d98..c9c973b 100644 --- a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc +++ b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc @@ -30,6 +30,7 @@ #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_tabstrip.h" #include "chrome/browser/ui/browser_window.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/browser/ui/extensions/extension_enable_flow.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" @@ -520,12 +521,11 @@ void AppLauncherHandler::HandleLaunchApp(const base::ListValue* args) { disposition == NEW_WINDOW) { // TODO(jamescook): Proper support for background tabs. AppLaunchParams params(profile, extension, - disposition == NEW_WINDOW ? - extensions::LAUNCH_CONTAINER_WINDOW : - extensions::LAUNCH_CONTAINER_TAB, - disposition); + disposition == NEW_WINDOW + ? extensions::LAUNCH_CONTAINER_WINDOW + : extensions::LAUNCH_CONTAINER_TAB, + disposition, extensions::SOURCE_NEW_TAB_PAGE); params.override_url = GURL(url); - params.source = extensions::SOURCE_NEW_TAB_PAGE; OpenApplication(params); } else { // To give a more "launchy" experience when using the NTP launcher, we close @@ -537,9 +537,9 @@ void AppLauncherHandler::HandleLaunchApp(const base::ListValue* args) { old_contents = browser->tab_strip_model()->GetActiveWebContents(); AppLaunchParams params(profile, extension, - old_contents ? CURRENT_TAB : NEW_FOREGROUND_TAB); + old_contents ? CURRENT_TAB : NEW_FOREGROUND_TAB, + extensions::SOURCE_NEW_TAB_PAGE); params.override_url = GURL(url); - params.source = extensions::SOURCE_NEW_TAB_PAGE; WebContents* new_contents = OpenApplication(params); // This will also destroy the handler, so do not perform any actions after. diff --git a/chrome/test/ppapi/ppapi_browsertest.cc b/chrome/test/ppapi/ppapi_browsertest.cc index c1b4df2..281c2c4 100644 --- a/chrome/test/ppapi/ppapi_browsertest.cc +++ b/chrome/test/ppapi/ppapi_browsertest.cc @@ -22,6 +22,7 @@ #include "content/public/common/url_constants.h" #include "content/public/test/javascript_test_observer.h" #include "content/public/test/test_renderer_host.h" +#include "extensions/common/constants.h" #include "extensions/test/extension_test_message_listener.h" #include "ppapi/shared_impl/test_harness_utils.h" @@ -1454,10 +1455,9 @@ class PackagedAppTest : public ExtensionBrowserTest { const extensions::Extension* extension = LoadExtension(app_dir); ASSERT_TRUE(extension); - AppLaunchParams params(browser()->profile(), - extension, - extensions::LAUNCH_CONTAINER_NONE, - NEW_WINDOW); + AppLaunchParams params(browser()->profile(), extension, + extensions::LAUNCH_CONTAINER_NONE, NEW_WINDOW, + extensions::SOURCE_UNTRACKED); params.command_line = *CommandLine::ForCurrentProcess(); OpenApplication(params); } diff --git a/chrome/test/remoting/remote_desktop_browsertest.cc b/chrome/test/remoting/remote_desktop_browsertest.cc index 868f52d..80160d5 100644 --- a/chrome/test/remoting/remote_desktop_browsertest.cc +++ b/chrome/test/remoting/remote_desktop_browsertest.cc @@ -10,6 +10,7 @@ #include "base/path_service.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/unpacked_installer.h" +#include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/common/chrome_switches.h" #include "chrome/test/remoting/key_code_conv.h" @@ -174,12 +175,12 @@ void RemoteDesktopBrowserTest::LaunchChromotingApp() { // till the chromoting main page is loaded. PageLoadNotificationObserver observer(chromoting_main); - OpenApplication(AppLaunchParams( - browser()->profile(), - extension_, - is_platform_app() ? extensions::LAUNCH_CONTAINER_NONE : - extensions::LAUNCH_CONTAINER_TAB, - is_platform_app() ? NEW_WINDOW : CURRENT_TAB)); + OpenApplication(AppLaunchParams(browser()->profile(), extension_, + is_platform_app() + ? extensions::LAUNCH_CONTAINER_NONE + : extensions::LAUNCH_CONTAINER_TAB, + is_platform_app() ? NEW_WINDOW : CURRENT_TAB, + extensions::SOURCE_UNTRACKED)); observer.Wait(); diff --git a/extensions/browser/api/app_runtime/app_runtime_api.cc b/extensions/browser/api/app_runtime/app_runtime_api.cc index 13ac1be..6cb7c71 100644 --- a/extensions/browser/api/app_runtime/app_runtime_api.cc +++ b/extensions/browser/api/app_runtime/app_runtime_api.cc @@ -83,13 +83,24 @@ app_runtime::LaunchSource getLaunchSourceEnum( return app_runtime::LAUNCH_SOURCE_FILE_HANDLER; case extensions::SOURCE_URL_HANDLER: return app_runtime::LAUNCH_SOURCE_URL_HANDLER; - case extensions::SOURCE_SYSTEM_TRAY: return app_runtime::LAUNCH_SOURCE_SYSTEM_TRAY; case extensions::SOURCE_ABOUT_PAGE: return app_runtime::LAUNCH_SOURCE_ABOUT_PAGE; case extensions::SOURCE_KEYBOARD: return app_runtime::LAUNCH_SOURCE_KEYBOARD; + case extensions::SOURCE_EXTENSIONS_PAGE: + return app_runtime::LAUNCH_SOURCE_EXTENSIONS_PAGE; + case extensions::SOURCE_MANAGEMENT_API: + return app_runtime::LAUNCH_SOURCE_MANAGEMENT_API; + case extensions::SOURCE_EPHEMERAL_APP: + return app_runtime::LAUNCH_SOURCE_EPHEMERAL_APP; + case extensions::SOURCE_BACKGROUND: + return app_runtime::LAUNCH_SOURCE_BACKGROUND; + case extensions::SOURCE_KIOSK: + return app_runtime::LAUNCH_SOURCE_KIOSK; + case extensions::SOURCE_CHROME_INTERNAL: + return app_runtime::LAUNCH_SOURCE_CHROME_INTERNAL; default: return app_runtime::LAUNCH_SOURCE_NONE; diff --git a/extensions/common/api/app_runtime.idl b/extensions/common/api/app_runtime.idl index 163db41..f729347 100644 --- a/extensions/common/api/app_runtime.idl +++ b/extensions/common/api/app_runtime.idl @@ -25,10 +25,15 @@ namespace app.runtime { command_line, file_handler, url_handler, - system_tray, about_page, - keyboard + keyboard, + extensions_page, + management_api, + ephemeral_app, + background, + kiosk, + chrome_internal }; // Optional data for the launch. Either <code>items</code>, or diff --git a/extensions/common/constants.h b/extensions/common/constants.h index 25d0be2..34f52c1 100644 --- a/extensions/common/constants.h +++ b/extensions/common/constants.h @@ -112,7 +112,7 @@ extern const char kWebStoreAppId[]; // Note the enumeration is used in UMA histogram so entries // should not be re-ordered or removed. enum AppLaunchSource { - SOURCE_UNTRACKED = 0, + SOURCE_UNTRACKED = 0, // Should be used in test. SOURCE_APP_LAUNCHER, SOURCE_NEW_TAB_PAGE, SOURCE_RELOAD, @@ -121,10 +121,15 @@ enum AppLaunchSource { SOURCE_COMMAND_LINE, SOURCE_FILE_HANDLER, SOURCE_URL_HANDLER, - SOURCE_SYSTEM_TRAY, SOURCE_ABOUT_PAGE, SOURCE_KEYBOARD, + SOURCE_EXTENSIONS_PAGE, + SOURCE_MANAGEMENT_API, + SOURCE_EPHEMERAL_APP, + SOURCE_BACKGROUND, + SOURCE_KIOSK, + SOURCE_CHROME_INTERNAL, NUM_APP_LAUNCH_SOURCES }; diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 1ba519a..d67a666 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml @@ -41089,6 +41089,12 @@ Therefore, the affected-histogram name has to have at least one dot in it. <int value="9" label="SOURCE_SYSTEM_TRAY"/> <int value="10" label="SOURCE_ABOUT_PAGE"/> <int value="11" label="SOURCE_KEYBOARD"/> + <int value="12" label="SOURCE_EXTENSIONS_PAGE"/> + <int value="13" label="SOURCE_MANAGEMENT_API"/> + <int value="14" label="SOURCE_EPHEMERAL_APP"/> + <int value="15" label="SOURCE_BACKGROUND"/> + <int value="16" label="SOURCE_KIOSK"/> + <int value="17" label="SOURCE_CHROME_INTERNAL"/> </enum> <enum name="AppListEnableSource" type="int"> |