OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/android/webapps/add_to_homescreen_data_fetcher.h" | 5 #include "chrome/browser/android/webapps/add_to_homescreen_data_fetcher.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/location.h" | 10 #include "base/location.h" |
| 11 #include "base/metrics/user_metrics.h" |
11 #include "base/strings/string16.h" | 12 #include "base/strings/string16.h" |
12 #include "base/task_runner_util.h" | 13 #include "base/task_runner_util.h" |
13 #include "base/threading/sequenced_worker_pool.h" | 14 #include "base/threading/sequenced_worker_pool.h" |
14 #include "chrome/browser/android/offline_pages/offline_page_utils.h" | 15 #include "chrome/browser/android/offline_pages/offline_page_utils.h" |
15 #include "chrome/browser/android/shortcut_helper.h" | 16 #include "chrome/browser/android/shortcut_helper.h" |
16 #include "chrome/browser/android/webapk/webapk_web_manifest_checker.h" | 17 #include "chrome/browser/android/webapk/webapk_web_manifest_checker.h" |
17 #include "chrome/browser/favicon/favicon_service_factory.h" | 18 #include "chrome/browser/favicon/favicon_service_factory.h" |
18 #include "chrome/browser/installable/installable_manager.h" | 19 #include "chrome/browser/installable/installable_manager.h" |
19 #include "chrome/browser/manifest/manifest_icon_selector.h" | 20 #include "chrome/browser/manifest/manifest_icon_selector.h" |
20 #include "chrome/browser/profiles/profile.h" | 21 #include "chrome/browser/profiles/profile.h" |
21 #include "chrome/common/chrome_constants.h" | 22 #include "chrome/common/chrome_constants.h" |
22 #include "chrome/common/render_messages.h" | 23 #include "chrome/common/render_messages.h" |
23 #include "chrome/common/web_application_info.h" | 24 #include "chrome/common/web_application_info.h" |
24 #include "components/dom_distiller/core/url_utils.h" | 25 #include "components/dom_distiller/core/url_utils.h" |
25 #include "components/favicon/core/favicon_service.h" | 26 #include "components/favicon/core/favicon_service.h" |
26 #include "components/favicon_base/favicon_types.h" | 27 #include "components/favicon_base/favicon_types.h" |
27 #include "content/public/browser/browser_thread.h" | 28 #include "content/public/browser/browser_thread.h" |
28 #include "content/public/browser/user_metrics.h" | |
29 #include "content/public/browser/web_contents.h" | 29 #include "content/public/browser/web_contents.h" |
30 #include "content/public/browser/web_contents_observer.h" | 30 #include "content/public/browser/web_contents_observer.h" |
31 #include "content/public/common/manifest.h" | 31 #include "content/public/common/manifest.h" |
32 #include "third_party/WebKit/public/platform/modules/screen_orientation/WebScree
nOrientationLockType.h" | 32 #include "third_party/WebKit/public/platform/modules/screen_orientation/WebScree
nOrientationLockType.h" |
33 #include "ui/gfx/codec/png_codec.h" | 33 #include "ui/gfx/codec/png_codec.h" |
34 #include "ui/gfx/favicon_size.h" | 34 #include "ui/gfx/favicon_size.h" |
35 #include "url/gurl.h" | 35 #include "url/gurl.h" |
36 | 36 |
37 namespace { | 37 namespace { |
38 | 38 |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 if (web_app_info.mobile_capable == WebApplicationInfo::MOBILE_CAPABLE || | 120 if (web_app_info.mobile_capable == WebApplicationInfo::MOBILE_CAPABLE || |
121 web_app_info.mobile_capable == WebApplicationInfo::MOBILE_CAPABLE_APPLE) { | 121 web_app_info.mobile_capable == WebApplicationInfo::MOBILE_CAPABLE_APPLE) { |
122 shortcut_info_.display = blink::WebDisplayModeStandalone; | 122 shortcut_info_.display = blink::WebDisplayModeStandalone; |
123 shortcut_info_.UpdateSource( | 123 shortcut_info_.UpdateSource( |
124 ShortcutInfo::SOURCE_ADD_TO_HOMESCREEN_STANDALONE); | 124 ShortcutInfo::SOURCE_ADD_TO_HOMESCREEN_STANDALONE); |
125 } | 125 } |
126 | 126 |
127 // Record what type of shortcut was added by the user. | 127 // Record what type of shortcut was added by the user. |
128 switch (web_app_info.mobile_capable) { | 128 switch (web_app_info.mobile_capable) { |
129 case WebApplicationInfo::MOBILE_CAPABLE: | 129 case WebApplicationInfo::MOBILE_CAPABLE: |
130 content::RecordAction( | 130 base::RecordAction( |
131 base::UserMetricsAction("webapps.AddShortcut.AppShortcut")); | 131 base::UserMetricsAction("webapps.AddShortcut.AppShortcut")); |
132 break; | 132 break; |
133 case WebApplicationInfo::MOBILE_CAPABLE_APPLE: | 133 case WebApplicationInfo::MOBILE_CAPABLE_APPLE: |
134 content::RecordAction( | 134 base::RecordAction( |
135 base::UserMetricsAction("webapps.AddShortcut.AppShortcutApple")); | 135 base::UserMetricsAction("webapps.AddShortcut.AppShortcutApple")); |
136 break; | 136 break; |
137 case WebApplicationInfo::MOBILE_CAPABLE_UNSPECIFIED: | 137 case WebApplicationInfo::MOBILE_CAPABLE_UNSPECIFIED: |
138 content::RecordAction( | 138 base::RecordAction( |
139 base::UserMetricsAction("webapps.AddShortcut.Bookmark")); | 139 base::UserMetricsAction("webapps.AddShortcut.Bookmark")); |
140 break; | 140 break; |
141 } | 141 } |
142 | 142 |
143 InstallableManager::CreateForWebContents(web_contents()); | 143 InstallableManager::CreateForWebContents(web_contents()); |
144 InstallableManager* manager = | 144 InstallableManager* manager = |
145 InstallableManager::FromWebContents(web_contents()); | 145 InstallableManager::FromWebContents(web_contents()); |
146 DCHECK(manager); | 146 DCHECK(manager); |
147 | 147 |
148 // Kick off a timeout for downloading data. If we haven't finished within the | 148 // Kick off a timeout for downloading data. If we haven't finished within the |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 weak_observer_->OnDidDetermineWebApkCompatibility(webapk_compatible); | 213 weak_observer_->OnDidDetermineWebApkCompatibility(webapk_compatible); |
214 | 214 |
215 if (webapk_compatible) { | 215 if (webapk_compatible) { |
216 // WebAPKs are wholly defined by the Web Manifest. Ignore the <meta> tag | 216 // WebAPKs are wholly defined by the Web Manifest. Ignore the <meta> tag |
217 // data received in OnDidGetWebApplicationInfo(). | 217 // data received in OnDidGetWebApplicationInfo(). |
218 shortcut_info_ = ShortcutInfo(GURL()); | 218 shortcut_info_ = ShortcutInfo(GURL()); |
219 } | 219 } |
220 } | 220 } |
221 | 221 |
222 if (!data.manifest.IsEmpty()) { | 222 if (!data.manifest.IsEmpty()) { |
223 content::RecordAction( | 223 base::RecordAction(base::UserMetricsAction("webapps.AddShortcut.Manifest")); |
224 base::UserMetricsAction("webapps.AddShortcut.Manifest")); | |
225 shortcut_info_.UpdateFromManifest(data.manifest); | 224 shortcut_info_.UpdateFromManifest(data.manifest); |
226 shortcut_info_.manifest_url = data.manifest_url; | 225 shortcut_info_.manifest_url = data.manifest_url; |
227 | 226 |
228 if (webapk_compatible) { | 227 if (webapk_compatible) { |
229 shortcut_info_.UpdateSource(ShortcutInfo::SOURCE_ADD_TO_HOMESCREEN_PWA); | 228 shortcut_info_.UpdateSource(ShortcutInfo::SOURCE_ADD_TO_HOMESCREEN_PWA); |
230 | 229 |
231 if (data.badge_icon && !data.badge_icon->drawsNothing()) { | 230 if (data.badge_icon && !data.badge_icon->drawsNothing()) { |
232 shortcut_info_.best_badge_icon_url = data.badge_icon_url; | 231 shortcut_info_.best_badge_icon_url = data.badge_icon_url; |
233 badge_icon_ = *data.badge_icon; | 232 badge_icon_ = *data.badge_icon; |
234 } | 233 } |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 void AddToHomescreenDataFetcher::NotifyObserver(const SkBitmap& primary_icon) { | 338 void AddToHomescreenDataFetcher::NotifyObserver(const SkBitmap& primary_icon) { |
340 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 339 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
341 if (!web_contents() || !weak_observer_ || is_icon_saved_) | 340 if (!web_contents() || !weak_observer_ || is_icon_saved_) |
342 return; | 341 return; |
343 | 342 |
344 is_icon_saved_ = true; | 343 is_icon_saved_ = true; |
345 primary_icon_ = primary_icon; | 344 primary_icon_ = primary_icon; |
346 is_ready_ = true; | 345 is_ready_ = true; |
347 weak_observer_->OnDataAvailable(shortcut_info_, primary_icon_, badge_icon_); | 346 weak_observer_->OnDataAvailable(shortcut_info_, primary_icon_, badge_icon_); |
348 } | 347 } |
OLD | NEW |