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 795afb237656a40af07e9913deabd8b4055c727b..25fa8a265b0bbb963782148eee14eaa1e6a07588 100644 |
--- a/chrome/browser/android/banners/app_banner_manager.cc |
+++ b/chrome/browser/android/banners/app_banner_manager.cc |
@@ -9,7 +9,6 @@ |
#include "base/bind.h" |
#include "base/command_line.h" |
#include "base/metrics/histogram.h" |
-#include "base/threading/worker_pool.h" |
#include "chrome/browser/android/banners/app_banner_infobar_delegate.h" |
#include "chrome/browser/android/banners/app_banner_metrics_ids.h" |
#include "chrome/browser/android/banners/app_banner_utilities.h" |
@@ -60,97 +59,6 @@ void AppBannerManager::Destroy(JNIEnv* env, jobject obj) { |
delete this; |
} |
-void AppBannerManager::BlockBanner(JNIEnv* env, |
- jobject obj, |
- jstring jurl, |
- jstring jpackage) { |
- if (!web_contents()) |
- return; |
- |
- GURL url(ConvertJavaStringToUTF8(env, jurl)); |
- std::string package_name = ConvertJavaStringToUTF8(env, jpackage); |
- AppBannerSettingsHelper::RecordBannerEvent( |
- web_contents(), url, package_name, |
- AppBannerSettingsHelper::APP_BANNER_EVENT_DID_BLOCK, base::Time::Now()); |
-} |
- |
-void AppBannerManager::Block() const { |
- if (!web_contents()) |
- return; |
- |
- 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(), |
- AppBannerSettingsHelper::APP_BANNER_EVENT_DID_BLOCK, base::Time::Now()); |
- } |
-} |
- |
-void AppBannerManager::OnInfoBarDestroyed() { |
- weak_infobar_ptr_ = nullptr; |
-} |
- |
-bool AppBannerManager::OnButtonClicked() const { |
- if (!web_contents()) |
- return true; |
- |
- if (!native_app_data_.is_null()) { |
- JNIEnv* env = base::android::AttachCurrentThread(); |
- ScopedJavaLocalRef<jobject> jobj = weak_java_banner_view_manager_.get(env); |
- if (jobj.is_null()) |
- return true; |
- |
- return Java_AppBannerManager_installOrOpenNativeApp(env, |
- jobj.obj(), |
- native_app_data_.obj()); |
- } else if (!web_app_data_.IsEmpty()) { |
- AppBannerSettingsHelper::RecordBannerEvent( |
- web_contents(), web_contents()->GetURL(), |
- web_app_data_.start_url.spec(), |
- AppBannerSettingsHelper::APP_BANNER_EVENT_DID_ADD_TO_HOMESCREEN, |
- base::Time::Now()); |
- |
- InstallManifestApp(web_app_data_, *app_icon_.get()); |
- return true; |
- } |
- |
- return true; |
-} |
- |
-bool AppBannerManager::OnLinkClicked() const { |
- if (!web_contents()) |
- return true; |
- |
- if (!native_app_data_.is_null()) { |
- // Try to show the details for the native app. |
- JNIEnv* env = base::android::AttachCurrentThread(); |
- ScopedJavaLocalRef<jobject> jobj = weak_java_banner_view_manager_.get(env); |
- if (jobj.is_null()) |
- return true; |
- |
- Java_AppBannerManager_showAppDetails(env, |
- jobj.obj(), |
- native_app_data_.obj()); |
- return true; |
- } else { |
- // Nothing should happen if the user is installing a web app. |
- return false; |
- } |
-} |
- |
-base::string16 AppBannerManager::GetTitle() const { |
- return app_title_; |
-} |
- |
-gfx::Image AppBannerManager::GetIcon() const { |
- return gfx::Image::CreateFrom1xBitmap(*app_icon_.get()); |
-} |
- |
void AppBannerManager::ReplaceWebContents(JNIEnv* env, |
jobject obj, |
jobject jweb_contents) { |
@@ -165,7 +73,6 @@ void AppBannerManager::DidNavigateMainFrame( |
// Clear current state. |
fetcher_.reset(); |
app_title_ = base::string16(); |
- app_icon_.reset(); |
web_app_data_ = content::Manifest(); |
native_app_data_.Reset(); |
native_app_package_ = std::string(); |
@@ -276,31 +183,33 @@ void AppBannerManager::OnFetchComplete(const GURL url, const SkBitmap* bitmap) { |
if (jobj.is_null()) |
return; |
- app_icon_.reset(new SkBitmap(*bitmap)); |
InfoBarService* service = InfoBarService::FromWebContents(web_contents()); |
- weak_infobar_ptr_ = nullptr; |
+ AppBannerInfoBar* weak_infobar_ptr = nullptr; |
if (!native_app_data_.is_null()) { |
RecordCouldShowBanner(native_app_package_); |
if (!CheckIfShouldShow(native_app_package_)) |
return; |
- weak_infobar_ptr_ = AppBannerInfoBarDelegate::CreateForNativeApp( |
+ weak_infobar_ptr = AppBannerInfoBarDelegate::CreateForNativeApp( |
service, |
- this, |
- native_app_data_); |
+ app_title_, |
+ new SkBitmap(*bitmap), |
+ native_app_data_, |
+ native_app_package_); |
} else if (!web_app_data_.IsEmpty()){ |
RecordCouldShowBanner(web_app_data_.start_url.spec()); |
if (!CheckIfShouldShow(web_app_data_.start_url.spec())) |
return; |
- weak_infobar_ptr_ = AppBannerInfoBarDelegate::CreateForWebApp( |
+ weak_infobar_ptr = AppBannerInfoBarDelegate::CreateForWebApp( |
service, |
- this, |
- web_app_data_.start_url); |
+ app_title_, |
+ new SkBitmap(*bitmap), |
+ web_app_data_); |
} |
- if (weak_infobar_ptr_ != nullptr) |
+ if (weak_infobar_ptr != nullptr) |
banners::TrackDisplayEvent(DISPLAY_CREATED); |
} |
@@ -349,53 +258,6 @@ bool AppBannerManager::OnAppDetailsRetrieved(JNIEnv* env, |
return FetchIcon(GURL(image_url)); |
} |
-void AppBannerManager::OnInstallIntentReturned(JNIEnv* env, |
- jobject obj, |
- jboolean jis_installing) { |
- if (!weak_infobar_ptr_) |
- return; |
- |
- if (jis_installing) { |
- AppBannerSettingsHelper::RecordBannerEvent( |
- web_contents(), |
- web_contents()->GetURL(), |
- native_app_package_, |
- AppBannerSettingsHelper::APP_BANNER_EVENT_DID_ADD_TO_HOMESCREEN, |
- base::Time::Now()); |
- } |
- |
- UpdateInstallState(env, obj); |
-} |
- |
-void AppBannerManager::OnInstallFinished(JNIEnv* env, |
- jobject obj, |
- jboolean success) { |
- if (!weak_infobar_ptr_) |
- return; |
- |
- if (success) { |
- UpdateInstallState(env, obj); |
- } else { |
- InfoBarService* service = InfoBarService::FromWebContents(web_contents()); |
- service->RemoveInfoBar(weak_infobar_ptr_); |
- } |
-} |
- |
-void AppBannerManager::UpdateInstallState(JNIEnv* env, jobject obj) { |
- if (!weak_infobar_ptr_ || native_app_data_.is_null()) |
- return; |
- |
- ScopedJavaLocalRef<jobject> jobj = weak_java_banner_view_manager_.get(env); |
- if (jobj.is_null()) |
- return; |
- |
- int newState = Java_AppBannerManager_determineInstallState( |
- env, |
- jobj.obj(), |
- native_app_data_.obj()); |
- weak_infobar_ptr_->OnInstallStateChanged(newState); |
-} |
- |
bool AppBannerManager::FetchIcon(const GURL& image_url) { |
if (!web_contents()) |
return false; |
@@ -422,20 +284,6 @@ int AppBannerManager::GetPreferredIconSize() { |
return Java_AppBannerManager_getPreferredIconSize(env, jobj.obj()); |
} |
-// static |
-void AppBannerManager::InstallManifestApp(const content::Manifest& manifest, |
- const SkBitmap& icon) { |
- ShortcutInfo info; |
- info.UpdateFromManifest(manifest); |
- |
- base::WorkerPool::PostTask( |
- FROM_HERE, |
- base::Bind(&ShortcutHelper::AddShortcutInBackgroundWithSkBitmap, |
- info, |
- icon), |
- true); |
-} |
- |
void RecordDismissEvent(JNIEnv* env, jclass clazz, jint metric) { |
banners::TrackDismissEvent(metric); |
} |