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

Side by Side Diff: chrome/browser/android/banners/app_banner_manager_android.cc

Issue 2259553002: Make AppBannerInfoBar install WebAPK. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
OLDNEW
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 <utility> 5 #include <utility>
6 6
7 #include "chrome/browser/android/banners/app_banner_manager_android.h" 7 #include "chrome/browser/android/banners/app_banner_manager_android.h"
8 8
9 #include "base/android/jni_android.h" 9 #include "base/android/jni_android.h"
10 #include "base/android/jni_string.h" 10 #include "base/android/jni_string.h"
11 #include "base/command_line.h"
11 #include "base/memory/ptr_util.h" 12 #include "base/memory/ptr_util.h"
12 #include "base/strings/utf_string_conversions.h" 13 #include "base/strings/utf_string_conversions.h"
13 #include "chrome/browser/android/banners/app_banner_infobar_delegate_android.h" 14 #include "chrome/browser/android/banners/app_banner_infobar_delegate_android.h"
14 #include "chrome/browser/android/shortcut_helper.h" 15 #include "chrome/browser/android/shortcut_helper.h"
15 #include "chrome/browser/banners/app_banner_metrics.h" 16 #include "chrome/browser/banners/app_banner_metrics.h"
16 #include "chrome/browser/infobars/infobar_service.h" 17 #include "chrome/browser/infobars/infobar_service.h"
17 #include "chrome/browser/manifest/manifest_icon_downloader.h" 18 #include "chrome/browser/manifest/manifest_icon_downloader.h"
18 #include "chrome/browser/manifest/manifest_icon_selector.h" 19 #include "chrome/browser/manifest/manifest_icon_selector.h"
19 #include "chrome/browser/ui/android/infobars/app_banner_infobar_android.h" 20 #include "chrome/browser/ui/android/infobars/app_banner_infobar_android.h"
20 #include "chrome/common/chrome_constants.h" 21 #include "chrome/common/chrome_constants.h"
22 #include "chrome/common/chrome_switches.h"
21 #include "content/public/browser/web_contents.h" 23 #include "content/public/browser/web_contents.h"
22 #include "content/public/common/frame_navigate_params.h" 24 #include "content/public/common/frame_navigate_params.h"
23 #include "jni/AppBannerManager_jni.h" 25 #include "jni/AppBannerManager_jni.h"
24 #include "third_party/skia/include/core/SkBitmap.h" 26 #include "third_party/skia/include/core/SkBitmap.h"
25 27
26 using base::android::ConvertJavaStringToUTF8; 28 using base::android::ConvertJavaStringToUTF8;
27 using base::android::ConvertJavaStringToUTF16; 29 using base::android::ConvertJavaStringToUTF16;
28 using base::android::ConvertUTF8ToJavaString; 30 using base::android::ConvertUTF8ToJavaString;
29 using base::android::JavaParamRef; 31 using base::android::JavaParamRef;
30 using base::android::ScopedJavaLocalRef; 32 using base::android::ScopedJavaLocalRef;
31 33
32 DEFINE_WEB_CONTENTS_USER_DATA_KEY(banners::AppBannerManagerAndroid); 34 DEFINE_WEB_CONTENTS_USER_DATA_KEY(banners::AppBannerManagerAndroid);
33 35
34 namespace { 36 namespace {
35 37
36 const char kPlayPlatform[] = "play"; 38 const char kPlayPlatform[] = "play";
37 const char kReferrerName[] = "referrer"; 39 const char kReferrerName[] = "referrer";
38 const char kIdName[] = "id"; 40 const char kIdName[] = "id";
39 const char kPlayInlineReferrer[] = "playinline=chrome_inline"; 41 const char kPlayInlineReferrer[] = "playinline=chrome_inline";
40 42
43 bool isWebApk(const GURL& start_url) {
44 const base::CommandLine* cmdline = base::CommandLine::ForCurrentProcess();
Xi Han 2016/08/19 12:50:09 I will change the command line check in another CL
45 bool enable_webapk = cmdline->HasSwitch(switches::kEnableWebApk);
46 return enable_webapk && start_url.SchemeIs("https");
47 }
48
41 } // anonymous namespace 49 } // anonymous namespace
42 50
43 namespace banners { 51 namespace banners {
44 52
45 AppBannerManagerAndroid::AppBannerManagerAndroid( 53 AppBannerManagerAndroid::AppBannerManagerAndroid(
46 content::WebContents* web_contents) 54 content::WebContents* web_contents)
47 : AppBannerManager(web_contents) { 55 : AppBannerManager(web_contents) {
48 CreateJavaBannerManager(); 56 CreateJavaBannerManager();
49 } 57 }
50 58
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 icon_.reset(new SkBitmap(bitmap)); 178 icon_.reset(new SkBitmap(bitmap));
171 SendBannerPromptRequest(); 179 SendBannerPromptRequest();
172 } 180 }
173 181
174 void AppBannerManagerAndroid::ShowBanner() { 182 void AppBannerManagerAndroid::ShowBanner() {
175 content::WebContents* contents = web_contents(); 183 content::WebContents* contents = web_contents();
176 DCHECK(contents); 184 DCHECK(contents);
177 185
178 infobars::InfoBar* infobar = nullptr; 186 infobars::InfoBar* infobar = nullptr;
179 if (native_app_data_.is_null()) { 187 if (native_app_data_.is_null()) {
188 bool is_webapk = isWebApk(manifest_.start_url);
180 std::unique_ptr<AppBannerInfoBarDelegateAndroid> delegate( 189 std::unique_ptr<AppBannerInfoBarDelegateAndroid> delegate(
181 new AppBannerInfoBarDelegateAndroid( 190 new AppBannerInfoBarDelegateAndroid(
182 GetWeakPtr(), app_title_, manifest_url_, manifest_, icon_url_, 191 GetWeakPtr(), app_title_, manifest_url_, manifest_, icon_url_,
183 std::move(icon_), event_request_id())); 192 std::move(icon_), event_request_id(), is_webapk));
184 193
185 infobar = new AppBannerInfoBarAndroid(std::move(delegate), 194 infobar = new AppBannerInfoBarAndroid(std::move(delegate),
186 manifest_.start_url); 195 manifest_.start_url);
187 if (infobar) { 196 if (infobar) {
188 RecordDidShowBanner("AppBanner.WebApp.Shown"); 197 if (is_webapk) {
189 TrackDisplayEvent(DISPLAY_EVENT_WEB_APP_BANNER_CREATED); 198 RecordDidShowBanner("AppBanner.WebApk.Shown");
190 ReportStatus(contents, SHOWING_WEB_APP_BANNER); 199 TrackDisplayEvent(DISPLAY_EVENT_WEBAPK_BANNER_CREATED);
200 ReportStatus(contents, SHOWING_WEBAPK_BANNER);
201 } else {
202 RecordDidShowBanner("AppBanner.WebApp.Shown");
203 TrackDisplayEvent(DISPLAY_EVENT_WEB_APP_BANNER_CREATED);
204 ReportStatus(contents, SHOWING_WEB_APP_BANNER);
205 }
191 } else { 206 } else {
192 ReportStatus(contents, FAILED_TO_CREATE_BANNER); 207 ReportStatus(contents, FAILED_TO_CREATE_BANNER);
193 } 208 }
194 } else { 209 } else {
195 std::unique_ptr<AppBannerInfoBarDelegateAndroid> delegate( 210 std::unique_ptr<AppBannerInfoBarDelegateAndroid> delegate(
196 new AppBannerInfoBarDelegateAndroid( 211 new AppBannerInfoBarDelegateAndroid(
197 app_title_, native_app_data_, std::move(icon_), native_app_package_, 212 app_title_, native_app_data_, std::move(icon_), native_app_package_,
198 referrer_, event_request_id())); 213 referrer_, event_request_id()));
199 infobar = 214 infobar =
200 new AppBannerInfoBarAndroid(std::move(delegate), native_app_data_); 215 new AppBannerInfoBarAndroid(std::move(delegate), native_app_data_);
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 } 335 }
321 336
322 // static 337 // static
323 void SetTimeDeltaForTesting(JNIEnv* env, 338 void SetTimeDeltaForTesting(JNIEnv* env,
324 const JavaParamRef<jclass>& clazz, 339 const JavaParamRef<jclass>& clazz,
325 jint days) { 340 jint days) {
326 AppBannerManager::SetTimeDeltaForTesting(days); 341 AppBannerManager::SetTimeDeltaForTesting(days);
327 } 342 }
328 343
329 } // namespace banners 344 } // namespace banners
OLDNEW
« no previous file with comments | « chrome/browser/android/banners/app_banner_infobar_delegate_android.cc ('k') | chrome/browser/android/shortcut_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698