Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2260)

Unified Diff: apps/launcher.cc

Issue 657023008: Add a new field "source" in launchData of chrome.app.runtime.onLaunched() to trace launch source. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: apps/launcher.cc
diff --git a/apps/launcher.cc b/apps/launcher.cc
index a4272a69b6e5e1079d1498bc278a8063048f1ea7..0eb18687de9c736c8888520a8fe82f96c1d968e1 100644
--- a/apps/launcher.cc
+++ b/apps/launcher.cc
@@ -82,14 +82,6 @@ bool DoMakePathAbsolute(const base::FilePath& current_directory,
return true;
}
-// Helper method to launch the platform app |extension| with no data. This
-// should be called in the fallback case, where it has been impossible to
-// load or obtain file launch data.
-void LaunchPlatformAppWithNoData(Profile* profile, const Extension* extension) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- AppRuntimeEventRouter::DispatchOnLaunchedEvent(profile, extension);
-}
-
// Class to handle launching of platform apps to open specific paths.
// An instance of this class is created for each launch. The lifetime of these
// instances is managed by reference counted pointers. As long as an instance
@@ -117,7 +109,7 @@ class PlatformAppPathLauncher
void Launch() {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
if (file_paths_.empty()) {
- LaunchPlatformAppWithNoData(profile_, extension_);
+ LaunchWithNoLaunchData();
return;
}
@@ -190,7 +182,8 @@ class PlatformAppPathLauncher
void LaunchWithNoLaunchData() {
// This method is required as an entry point on the UI thread.
- LaunchPlatformAppWithNoData(profile_, extension_);
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ AppRuntimeEventRouter::DispatchOnLaunchedEvent(profile_, extension_);
}
void OnMimeTypesCollected(scoped_ptr<std::vector<std::string> > mime_types) {
@@ -310,7 +303,8 @@ class PlatformAppPathLauncher
void LaunchPlatformAppWithCommandLine(Profile* profile,
const Extension* extension,
const CommandLine& command_line,
- const base::FilePath& current_directory) {
+ const base::FilePath& current_directory,
+ extensions::AppLaunchSource source) {
// An app with "kiosk_only" should not be installed and launched
// outside of ChromeOS kiosk mode in the first place. This is a defensive
// check in case this scenario does occur.
@@ -341,7 +335,8 @@ void LaunchPlatformAppWithCommandLine(Profile* profile,
// causes problems on the bots.
if (args.empty() || (command_line.HasSwitch(switches::kTestType) &&
args[0] == about_blank_url)) {
- LaunchPlatformAppWithNoData(profile, extension);
+ AppRuntimeEventRouter::DispatchOnLaunchedEventWithSource(
+ profile, extension, source);
return;
}
@@ -363,7 +358,18 @@ void LaunchPlatformApp(Profile* profile, const Extension* extension) {
LaunchPlatformAppWithCommandLine(profile,
extension,
CommandLine(CommandLine::NO_PROGRAM),
- base::FilePath());
+ base::FilePath(),
+ extensions::SOURCE_UNKNOWN);
+}
+
+void LaunchPlatformAppWithSource(Profile* profile,
+ const Extension* extension,
+ extensions::AppLaunchSource source) {
+ LaunchPlatformAppWithCommandLine(profile,
+ extension,
+ CommandLine(CommandLine::NO_PROGRAM),
+ base::FilePath(),
+ source);
}
void LaunchPlatformAppWithFileHandler(
@@ -386,7 +392,6 @@ void RestartPlatformApp(Profile* profile, const Extension* extension) {
AppRuntimeEventRouter::DispatchOnRestartedEvent(profile, extension);
return;
}
-
extensions::ExtensionPrefs* extension_prefs =
extensions::ExtensionPrefs::Get(profile);
bool had_windows = extension_prefs->IsActive(extension->id());
@@ -395,8 +400,10 @@ void RestartPlatformApp(Profile* profile, const Extension* extension) {
ExtensionHasEventListener(extension->id(),
app_runtime::OnLaunched::kEventName);
- if (listening_to_launch && had_windows)
- LaunchPlatformAppWithNoData(profile, extension);
+ if (listening_to_launch && had_windows) {
+ AppRuntimeEventRouter::DispatchOnLaunchedEventWithSource(
+ profile, extension, extensions::SOURCE_RESTART);
+ }
}
void LaunchPlatformAppWithUrl(Profile* profile,

Powered by Google App Engine
This is Rietveld 408576698