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

Side by Side Diff: chrome/browser/ui/webui/ntp/app_launcher_handler.cc

Issue 7550015: ntp4: record app launch source (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: better comments Created 9 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/webui/ntp/app_launcher_handler.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "chrome/browser/ui/webui/ntp/app_launcher_handler.h" 5 #include "chrome/browser/ui/webui/ntp/app_launcher_handler.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 } 144 }
145 value->SetInteger("app_launch_index", app_launch_index); 145 value->SetInteger("app_launch_index", app_launch_index);
146 146
147 int page_index = prefs->GetPageIndex(extension->id()); 147 int page_index = prefs->GetPageIndex(extension->id());
148 if (page_index >= 0) { 148 if (page_index >= 0) {
149 // Only provide a value if one is stored 149 // Only provide a value if one is stored
150 value->SetInteger("page_index", page_index); 150 value->SetInteger("page_index", page_index);
151 } 151 }
152 } 152 }
153 153
154 // TODO(estade): remove this. We record app launches via js calls rather than
155 // pings for ntp4.
154 // static 156 // static
155 bool AppLauncherHandler::HandlePing(Profile* profile, const std::string& path) { 157 bool AppLauncherHandler::HandlePing(Profile* profile, const std::string& path) {
156 std::vector<std::string> params; 158 std::vector<std::string> params;
157 base::SplitString(path, '+', &params); 159 base::SplitString(path, '+', &params);
158 160
159 // Check if the user launched an app from the most visited or recently 161 // Check if the user launched an app from the most visited or recently
160 // closed sections. 162 // closed sections.
161 if (kPingLaunchAppByURL == params.at(0)) { 163 if (kPingLaunchAppByURL == params.at(0)) {
162 CHECK(params.size() == 3); 164 CHECK(params.size() == 3);
163 RecordAppLaunchByURL( 165 RecordAppLaunchByURL(
(...skipping 22 matching lines...) Expand all
186 RecordWebStoreLaunch(is_promo_active); 188 RecordWebStoreLaunch(is_promo_active);
187 } else { 189 } else {
188 CHECK(params.size() == 3); 190 CHECK(params.size() == 3);
189 RecordAppLaunchByID(is_promo_active, ParseLaunchSource(params.at(2))); 191 RecordAppLaunchByID(is_promo_active, ParseLaunchSource(params.at(2)));
190 } 192 }
191 193
192 return true; 194 return true;
193 } 195 }
194 196
195 WebUIMessageHandler* AppLauncherHandler::Attach(WebUI* web_ui) { 197 WebUIMessageHandler* AppLauncherHandler::Attach(WebUI* web_ui) {
196 // TODO(arv): Add initialization code to the Apps store etc.
197 return WebUIMessageHandler::Attach(web_ui); 198 return WebUIMessageHandler::Attach(web_ui);
198 } 199 }
199 200
200 void AppLauncherHandler::RegisterMessages() { 201 void AppLauncherHandler::RegisterMessages() {
201 web_ui_->RegisterMessageCallback("getApps", 202 web_ui_->RegisterMessageCallback("getApps",
202 NewCallback(this, &AppLauncherHandler::HandleGetApps)); 203 NewCallback(this, &AppLauncherHandler::HandleGetApps));
203 web_ui_->RegisterMessageCallback("launchApp", 204 web_ui_->RegisterMessageCallback("launchApp",
204 NewCallback(this, &AppLauncherHandler::HandleLaunchApp)); 205 NewCallback(this, &AppLauncherHandler::HandleLaunchApp));
205 web_ui_->RegisterMessageCallback("setLaunchType", 206 web_ui_->RegisterMessageCallback("setLaunchType",
206 NewCallback(this, &AppLauncherHandler::HandleSetLaunchType)); 207 NewCallback(this, &AppLauncherHandler::HandleSetLaunchType));
207 web_ui_->RegisterMessageCallback("uninstallApp", 208 web_ui_->RegisterMessageCallback("uninstallApp",
208 NewCallback(this, &AppLauncherHandler::HandleUninstallApp)); 209 NewCallback(this, &AppLauncherHandler::HandleUninstallApp));
209 web_ui_->RegisterMessageCallback("hideAppsPromo", 210 web_ui_->RegisterMessageCallback("hideAppsPromo",
210 NewCallback(this, &AppLauncherHandler::HandleHideAppsPromo)); 211 NewCallback(this, &AppLauncherHandler::HandleHideAppsPromo));
211 web_ui_->RegisterMessageCallback("createAppShortcut", 212 web_ui_->RegisterMessageCallback("createAppShortcut",
212 NewCallback(this, &AppLauncherHandler::HandleCreateAppShortcut)); 213 NewCallback(this, &AppLauncherHandler::HandleCreateAppShortcut));
213 web_ui_->RegisterMessageCallback("reorderApps", 214 web_ui_->RegisterMessageCallback("reorderApps",
214 NewCallback(this, &AppLauncherHandler::HandleReorderApps)); 215 NewCallback(this, &AppLauncherHandler::HandleReorderApps));
215 web_ui_->RegisterMessageCallback("setPageIndex", 216 web_ui_->RegisterMessageCallback("setPageIndex",
216 NewCallback(this, &AppLauncherHandler::HandleSetPageIndex)); 217 NewCallback(this, &AppLauncherHandler::HandleSetPageIndex));
217 web_ui_->RegisterMessageCallback("promoSeen", 218 web_ui_->RegisterMessageCallback("promoSeen",
218 NewCallback(this, &AppLauncherHandler::HandlePromoSeen)); 219 NewCallback(this, &AppLauncherHandler::HandlePromoSeen));
219 web_ui_->RegisterMessageCallback("saveAppPageName", 220 web_ui_->RegisterMessageCallback("saveAppPageName",
220 NewCallback(this, &AppLauncherHandler::HandleSaveAppPageName)); 221 NewCallback(this, &AppLauncherHandler::HandleSaveAppPageName));
221 web_ui_->RegisterMessageCallback("generateAppForLink", 222 web_ui_->RegisterMessageCallback("generateAppForLink",
222 NewCallback(this, &AppLauncherHandler::HandleGenerateAppForLink)); 223 NewCallback(this, &AppLauncherHandler::HandleGenerateAppForLink));
224 web_ui_->RegisterMessageCallback("recordAppLaunchByURL",
225 NewCallback(this, &AppLauncherHandler::HandleRecordAppLaunchByURL));
223 } 226 }
224 227
225 void AppLauncherHandler::Observe(int type, 228 void AppLauncherHandler::Observe(int type,
226 const NotificationSource& source, 229 const NotificationSource& source,
227 const NotificationDetails& details) { 230 const NotificationDetails& details) {
228 if (ignore_changes_) 231 if (ignore_changes_)
229 return; 232 return;
230 233
231 switch (type) { 234 switch (type) {
232 case chrome::NOTIFICATION_APP_NOTIFICATION_STATE_CHANGED: { 235 case chrome::NOTIFICATION_APP_NOTIFICATION_STATE_CHANGED: {
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
477 // If the user pressed special keys when clicking, override the saved 480 // If the user pressed special keys when clicking, override the saved
478 // preference for launch container. 481 // preference for launch container.
479 bool middle_button = (button == 1.0); 482 bool middle_button = (button == 1.0);
480 WindowOpenDisposition disposition = 483 WindowOpenDisposition disposition =
481 disposition_utils::DispositionFromClick(middle_button, alt_key, 484 disposition_utils::DispositionFromClick(middle_button, alt_key,
482 ctrl_key, meta_key, shift_key); 485 ctrl_key, meta_key, shift_key);
483 486
484 if (extension_id != extension_misc::kWebStoreAppId) { 487 if (extension_id != extension_misc::kWebStoreAppId) {
485 RecordAppLaunchByID(promo_active_, launch_bucket); 488 RecordAppLaunchByID(promo_active_, launch_bucket);
486 extensions_service_->apps_promo()->ExpireDefaultApps(); 489 extensions_service_->apps_promo()->ExpireDefaultApps();
490 } else if (CommandLine::ForCurrentProcess()->HasSwitch(
491 switches::kNewTabPage4)) {
492 RecordWebStoreLaunch(promo_active_);
487 } 493 }
488 494
489 if (disposition == NEW_FOREGROUND_TAB || disposition == NEW_BACKGROUND_TAB) { 495 if (disposition == NEW_FOREGROUND_TAB || disposition == NEW_BACKGROUND_TAB) {
490 // TODO(jamescook): Proper support for background tabs. 496 // TODO(jamescook): Proper support for background tabs.
491 Browser::OpenApplication( 497 Browser::OpenApplication(
492 profile, extension, extension_misc::LAUNCH_TAB, disposition); 498 profile, extension, extension_misc::LAUNCH_TAB, disposition);
493 } else if (disposition == NEW_WINDOW) { 499 } else if (disposition == NEW_WINDOW) {
494 // Force a new window open. 500 // Force a new window open.
495 Browser::OpenApplication( 501 Browser::OpenApplication(
496 profile, extension, extension_misc::LAUNCH_WINDOW, disposition); 502 profile, extension, extension_misc::LAUNCH_WINDOW, disposition);
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
686 return; 692 return;
687 } 693 }
688 694
689 // TODO(gbillock): get page thumb from thumbnail db/history svc? 695 // TODO(gbillock): get page thumb from thumbnail db/history svc?
690 FaviconService::Handle h = favicon_service->GetFaviconForURL( 696 FaviconService::Handle h = favicon_service->GetFaviconForURL(
691 launch_url, history::FAVICON, &favicon_consumer_, 697 launch_url, history::FAVICON, &favicon_consumer_,
692 NewCallback(this, &AppLauncherHandler::OnFaviconForApp)); 698 NewCallback(this, &AppLauncherHandler::OnFaviconForApp));
693 favicon_consumer_.SetClientData(favicon_service, h, web_app.release()); 699 favicon_consumer_.SetClientData(favicon_service, h, web_app.release());
694 } 700 }
695 701
702 void AppLauncherHandler::HandleRecordAppLaunchByURL(
703 const base::ListValue* args) {
704 std::string url;
705 CHECK(args->GetString(0, &url));
706 double source;
707 CHECK(args->GetDouble(1, &source));
708
709 extension_misc::AppLaunchBucket bucket =
710 static_cast<extension_misc::AppLaunchBucket>(source);
711 CHECK(source < extension_misc::APP_LAUNCH_BUCKET_BOUNDARY);
712
713 RecordAppLaunchByURL(web_ui_->GetProfile(), url, bucket);
714 }
715
696 void AppLauncherHandler::OnFaviconForApp(FaviconService::Handle handle, 716 void AppLauncherHandler::OnFaviconForApp(FaviconService::Handle handle,
697 history::FaviconData data) { 717 history::FaviconData data) {
698 scoped_ptr<WebApplicationInfo> web_app( 718 scoped_ptr<WebApplicationInfo> web_app(
699 favicon_consumer_.GetClientDataForCurrentRequest()); 719 favicon_consumer_.GetClientDataForCurrentRequest());
700 CHECK(!web_app->icons.empty()); 720 CHECK(!web_app->icons.empty());
701 if (data.is_valid() && gfx::PNGCodec::Decode(data.image_data->front(), 721 if (data.is_valid() && gfx::PNGCodec::Decode(data.image_data->front(),
702 data.image_data->size(), 722 data.image_data->size(),
703 &(web_app->icons[0].data))) { 723 &(web_app->icons[0].data))) {
704 web_app->icons[0].url = GURL(); 724 web_app->icons[0].url = GURL();
705 web_app->icons[0].width = web_app->icons[0].data.width(); 725 web_app->icons[0].width = web_app->icons[0].data.width();
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
861 881
862 void AppLauncherHandler::UninstallDefaultApps() { 882 void AppLauncherHandler::UninstallDefaultApps() {
863 AppsPromo* apps_promo = extensions_service_->apps_promo(); 883 AppsPromo* apps_promo = extensions_service_->apps_promo();
864 const ExtensionIdSet& app_ids = apps_promo->old_default_apps(); 884 const ExtensionIdSet& app_ids = apps_promo->old_default_apps();
865 for (ExtensionIdSet::const_iterator iter = app_ids.begin(); 885 for (ExtensionIdSet::const_iterator iter = app_ids.begin();
866 iter != app_ids.end(); ++iter) { 886 iter != app_ids.end(); ++iter) {
867 if (extensions_service_->GetExtensionById(*iter, true)) 887 if (extensions_service_->GetExtensionById(*iter, true))
868 extensions_service_->UninstallExtension(*iter, false, NULL); 888 extensions_service_->UninstallExtension(*iter, false, NULL);
869 } 889 }
870 } 890 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/ntp/app_launcher_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698