| Index: chrome/browser/ui/webui/ntp/app_launcher_handler.cc
|
| diff --git a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc
|
| index a8c2df64327b99da934c88f7f951944c1b28fd5f..0e2b5bede13f0a449e4b3e963808aac13416d65c 100644
|
| --- a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc
|
| +++ b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc
|
| @@ -67,6 +67,7 @@
|
| #include "extensions/common/extension.h"
|
| #include "extensions/common/extension_icon_set.h"
|
| #include "extensions/common/extension_set.h"
|
| +#include "net/base/url_util.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| #include "ui/base/webui/web_ui_util.h"
|
| #include "url/gurl.h"
|
| @@ -482,9 +483,7 @@ void AppLauncherHandler::HandleLaunchApp(const base::ListValue* args) {
|
| CHECK(args->GetString(0, &extension_id));
|
| double source = -1.0;
|
| CHECK(args->GetDouble(1, &source));
|
| - std::string url;
|
| - if (args->GetSize() > 2)
|
| - CHECK(args->GetString(2, &url));
|
| + GURL override_url;
|
|
|
| extension_misc::AppLaunchBucket launch_bucket =
|
| static_cast<extension_misc::AppLaunchBucket>(
|
| @@ -511,6 +510,16 @@ void AppLauncherHandler::HandleLaunchApp(const base::ListValue* args) {
|
| extensions::RecordAppLaunchType(launch_bucket, extension->GetType());
|
| } else {
|
| extensions::RecordWebStoreLaunch();
|
| +
|
| + if (args->GetSize() > 2) {
|
| + std::string source_value;
|
| + CHECK(args->GetString(2, &source_value));
|
| + if (!source_value.empty()) {
|
| + override_url = net::AppendQueryParameter(
|
| + extensions::AppLaunchInfo::GetFullLaunchURL(extension),
|
| + extension_urls::kWebstoreSourceField, source_value);
|
| + }
|
| + }
|
| }
|
|
|
| if (disposition == WindowOpenDisposition::NEW_FOREGROUND_TAB ||
|
| @@ -522,7 +531,7 @@ void AppLauncherHandler::HandleLaunchApp(const base::ListValue* args) {
|
| ? extensions::LAUNCH_CONTAINER_WINDOW
|
| : extensions::LAUNCH_CONTAINER_TAB,
|
| disposition, extensions::SOURCE_NEW_TAB_PAGE);
|
| - params.override_url = GURL(url);
|
| + params.override_url = override_url;
|
| OpenApplication(params);
|
| } else {
|
| // To give a more "launchy" experience when using the NTP launcher, we close
|
| @@ -538,7 +547,7 @@ void AppLauncherHandler::HandleLaunchApp(const base::ListValue* args) {
|
| old_contents ? WindowOpenDisposition::CURRENT_TAB
|
| : WindowOpenDisposition::NEW_FOREGROUND_TAB,
|
| extensions::SOURCE_NEW_TAB_PAGE);
|
| - params.override_url = GURL(url);
|
| + params.override_url = override_url;
|
| WebContents* new_contents = OpenApplication(params);
|
|
|
| // This will also destroy the handler, so do not perform any actions after.
|
|
|