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

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: Move logic to WebApkInstaller. 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"
16 #include "chrome/browser/android/webapk/chrome_webapk_host.h"
15 #include "chrome/browser/banners/app_banner_metrics.h" 17 #include "chrome/browser/banners/app_banner_metrics.h"
16 #include "chrome/browser/infobars/infobar_service.h" 18 #include "chrome/browser/infobars/infobar_service.h"
17 #include "chrome/browser/manifest/manifest_icon_downloader.h" 19 #include "chrome/browser/manifest/manifest_icon_downloader.h"
18 #include "chrome/browser/manifest/manifest_icon_selector.h" 20 #include "chrome/browser/manifest/manifest_icon_selector.h"
19 #include "chrome/browser/ui/android/infobars/app_banner_infobar_android.h" 21 #include "chrome/browser/ui/android/infobars/app_banner_infobar_android.h"
20 #include "chrome/common/chrome_constants.h" 22 #include "chrome/common/chrome_constants.h"
23 #include "chrome/common/chrome_switches.h"
21 #include "content/public/browser/web_contents.h" 24 #include "content/public/browser/web_contents.h"
22 #include "content/public/common/frame_navigate_params.h" 25 #include "content/public/common/frame_navigate_params.h"
23 #include "jni/AppBannerManager_jni.h" 26 #include "jni/AppBannerManager_jni.h"
24 #include "third_party/skia/include/core/SkBitmap.h" 27 #include "third_party/skia/include/core/SkBitmap.h"
25 28
26 using base::android::ConvertJavaStringToUTF8; 29 using base::android::ConvertJavaStringToUTF8;
27 using base::android::ConvertJavaStringToUTF16; 30 using base::android::ConvertJavaStringToUTF16;
28 using base::android::ConvertUTF8ToJavaString; 31 using base::android::ConvertUTF8ToJavaString;
29 using base::android::JavaParamRef; 32 using base::android::JavaParamRef;
30 using base::android::ScopedJavaLocalRef; 33 using base::android::ScopedJavaLocalRef;
31 34
32 DEFINE_WEB_CONTENTS_USER_DATA_KEY(banners::AppBannerManagerAndroid); 35 DEFINE_WEB_CONTENTS_USER_DATA_KEY(banners::AppBannerManagerAndroid);
33 36
34 namespace { 37 namespace {
35 38
36 const char kPlayPlatform[] = "play"; 39 const char kPlayPlatform[] = "play";
37 const char kReferrerName[] = "referrer"; 40 const char kReferrerName[] = "referrer";
38 const char kIdName[] = "id"; 41 const char kIdName[] = "id";
39 const char kPlayInlineReferrer[] = "playinline=chrome_inline"; 42 const char kPlayInlineReferrer[] = "playinline=chrome_inline";
40 43
44 bool AreWebApkEnabled(const GURL& start_url) {
45 return ChromeWebApkHost::AreWebApkEnabled();
dominickn 2016/08/25 04:25:56 Remove this method and just call ChromeWebApkHost:
Xi Han 2016/08/26 17:04:17 Done.
46 }
47
41 } // anonymous namespace 48 } // anonymous namespace
42 49
43 namespace banners { 50 namespace banners {
44 51
45 AppBannerManagerAndroid::AppBannerManagerAndroid( 52 AppBannerManagerAndroid::AppBannerManagerAndroid(
46 content::WebContents* web_contents) 53 content::WebContents* web_contents)
47 : AppBannerManager(web_contents) { 54 : AppBannerManager(web_contents) {
48 CreateJavaBannerManager(); 55 CreateJavaBannerManager();
49 } 56 }
50 57
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 icon_.reset(new SkBitmap(bitmap)); 177 icon_.reset(new SkBitmap(bitmap));
171 SendBannerPromptRequest(); 178 SendBannerPromptRequest();
172 } 179 }
173 180
174 void AppBannerManagerAndroid::ShowBanner() { 181 void AppBannerManagerAndroid::ShowBanner() {
175 content::WebContents* contents = web_contents(); 182 content::WebContents* contents = web_contents();
176 DCHECK(contents); 183 DCHECK(contents);
177 184
178 infobars::InfoBar* infobar = nullptr; 185 infobars::InfoBar* infobar = nullptr;
179 if (native_app_data_.is_null()) { 186 if (native_app_data_.is_null()) {
187 bool is_webapk = AreWebApkEnabled(manifest_.start_url);
180 std::unique_ptr<AppBannerInfoBarDelegateAndroid> delegate( 188 std::unique_ptr<AppBannerInfoBarDelegateAndroid> delegate(
181 new AppBannerInfoBarDelegateAndroid( 189 new AppBannerInfoBarDelegateAndroid(
182 GetWeakPtr(), app_title_, manifest_url_, manifest_, icon_url_, 190 GetWeakPtr(), app_title_, manifest_url_, manifest_, icon_url_,
183 std::move(icon_), event_request_id())); 191 std::move(icon_), event_request_id(), is_webapk));
184 192
185 infobar = new AppBannerInfoBarAndroid(std::move(delegate), 193 infobar = new AppBannerInfoBarAndroid(
186 manifest_.start_url); 194 std::move(delegate), manifest_.start_url, is_webapk);
187 if (infobar) { 195 if (infobar) {
188 RecordDidShowBanner("AppBanner.WebApp.Shown"); 196 if (is_webapk) {
189 TrackDisplayEvent(DISPLAY_EVENT_WEB_APP_BANNER_CREATED); 197 RecordDidShowBanner("AppBanner.WebApk.Shown");
190 ReportStatus(contents, SHOWING_WEB_APP_BANNER); 198 TrackDisplayEvent(DISPLAY_EVENT_WEBAPK_BANNER_CREATED);
199 ReportStatus(contents, SHOWING_WEBAPK_BANNER);
200 } else {
201 RecordDidShowBanner("AppBanner.WebApp.Shown");
202 TrackDisplayEvent(DISPLAY_EVENT_WEB_APP_BANNER_CREATED);
203 ReportStatus(contents, SHOWING_WEB_APP_BANNER);
204 }
191 } else { 205 } else {
192 ReportStatus(contents, FAILED_TO_CREATE_BANNER); 206 ReportStatus(contents, FAILED_TO_CREATE_BANNER);
193 } 207 }
194 } else { 208 } else {
195 std::unique_ptr<AppBannerInfoBarDelegateAndroid> delegate( 209 std::unique_ptr<AppBannerInfoBarDelegateAndroid> delegate(
196 new AppBannerInfoBarDelegateAndroid( 210 new AppBannerInfoBarDelegateAndroid(
197 app_title_, native_app_data_, std::move(icon_), native_app_package_, 211 app_title_, native_app_data_, std::move(icon_), native_app_package_,
198 referrer_, event_request_id())); 212 referrer_, event_request_id()));
199 infobar = 213 infobar =
200 new AppBannerInfoBarAndroid(std::move(delegate), native_app_data_); 214 new AppBannerInfoBarAndroid(std::move(delegate), native_app_data_);
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 } 334 }
321 335
322 // static 336 // static
323 void SetTimeDeltaForTesting(JNIEnv* env, 337 void SetTimeDeltaForTesting(JNIEnv* env,
324 const JavaParamRef<jclass>& clazz, 338 const JavaParamRef<jclass>& clazz,
325 jint days) { 339 jint days) {
326 AppBannerManager::SetTimeDeltaForTesting(days); 340 AppBannerManager::SetTimeDeltaForTesting(days);
327 } 341 }
328 342
329 } // namespace banners 343 } // namespace banners
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698