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

Unified Diff: chrome/browser/android/banners/app_banner_manager.cc

Issue 896243004: Start piping Android app promos through AppBannerInfoBars (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressing nits Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/android/banners/app_banner_manager.cc
diff --git a/chrome/browser/android/banners/app_banner_manager.cc b/chrome/browser/android/banners/app_banner_manager.cc
index 99d9b315c3a1b43ae201d7631b994376cac01e6b..140901f1bc52878aaeb46edd391b1b5af16a488a 100644
--- a/chrome/browser/android/banners/app_banner_manager.cc
+++ b/chrome/browser/android/banners/app_banner_manager.cc
@@ -78,7 +78,12 @@ void AppBannerManager::Block() const {
if (!web_contents())
return;
- if (!web_app_data_.IsEmpty()) {
+ if (!native_app_data_.is_null()) {
+ AppBannerSettingsHelper::RecordBannerEvent(
+ web_contents(), web_contents()->GetURL(),
+ native_app_package_,
+ AppBannerSettingsHelper::APP_BANNER_EVENT_DID_BLOCK, base::Time::Now());
+ } else if (!web_app_data_.IsEmpty()) {
AppBannerSettingsHelper::RecordBannerEvent(
web_contents(), web_contents()->GetURL(),
web_app_data_.start_url.spec(),
@@ -132,6 +137,8 @@ void AppBannerManager::DidNavigateMainFrame(
app_title_ = base::string16();
app_icon_.reset();
web_app_data_ = content::Manifest();
+ native_app_data_.Reset();
+ native_app_package_ = std::string();
}
void AppBannerManager::DidFinishLoad(
@@ -247,7 +254,12 @@ void AppBannerManager::OnFetchComplete(const GURL url, const SkBitmap* bitmap) {
InfoBarService* service = InfoBarService::FromWebContents(web_contents());
weak_infobar_ptr_ = nullptr;
- if (!web_app_data_.IsEmpty()){
+ if (!native_app_data_.is_null()) {
+ weak_infobar_ptr_ = AppBannerInfoBarDelegate::CreateForNativeApp(
+ service,
+ this,
+ native_app_data_);
+ } else if (!web_app_data_.IsEmpty()){
weak_infobar_ptr_ = AppBannerInfoBarDelegate::CreateForWebApp(
service,
this,
@@ -285,16 +297,25 @@ void AppBannerManager::OnDidRetrieveMetaTagContent(
ConvertUTF8ToJavaString(env, expected_url.spec()));
ScopedJavaLocalRef<jstring> jpackage(
ConvertUTF8ToJavaString(env, tag_content));
- Java_AppBannerManager_prepareBanner(env,
- jobj.obj(),
- jurl.obj(),
- jpackage.obj());
+ Java_AppBannerManager_fetchAppDetails(env,
+ jobj.obj(),
+ jurl.obj(),
+ jpackage.obj());
}
-bool AppBannerManager::FetchIcon(JNIEnv* env,
- jobject obj,
- jstring jimage_url) {
- std::string image_url = ConvertJavaStringToUTF8(env, jimage_url);
+bool AppBannerManager::OnAppDetailsRetrieved(JNIEnv* env,
+ jobject obj,
+ jobject japp_data,
+ jstring japp_title,
+ jstring japp_package,
+ jstring jicon_url) {
+ if (validated_url_ != web_contents()->GetURL())
+ return false;
+
+ std::string image_url = ConvertJavaStringToUTF8(env, jicon_url);
+ app_title_ = ConvertJavaStringToUTF16(env, japp_title);
+ native_app_package_ = ConvertJavaStringToUTF8(env, japp_package);
+ native_app_data_.Reset(env, japp_data);
return FetchIcon(GURL(image_url));
}
« no previous file with comments | « chrome/browser/android/banners/app_banner_manager.h ('k') | chrome/browser/ui/android/infobars/app_banner_infobar.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698