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

Side by Side Diff: chrome/browser/ui/android/infobars/app_banner_infobar.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 unified diff | Download patch
« no previous file with comments | « chrome/browser/ui/android/infobars/app_banner_infobar.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "chrome/browser/ui/android/infobars/app_banner_infobar.h" 5 #include "chrome/browser/ui/android/infobars/app_banner_infobar.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/android/jni_string.h" 8 #include "base/android/jni_string.h"
9 #include "base/android/scoped_java_ref.h" 9 #include "base/android/scoped_java_ref.h"
10 #include "chrome/browser/android/banners/app_banner_infobar_delegate.h" 10 #include "chrome/browser/android/banners/app_banner_infobar_delegate.h"
11 #include "jni/AppBannerInfoBar_jni.h" 11 #include "jni/AppBannerInfoBar_jni.h"
12 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" 12 #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
13 #include "ui/gfx/android/java_bitmap.h" 13 #include "ui/gfx/android/java_bitmap.h"
14 #include "ui/gfx/image/image.h" 14 #include "ui/gfx/image/image.h"
15 15
16
17 AppBannerInfoBar::AppBannerInfoBar(
18 scoped_ptr<banners::AppBannerInfoBarDelegate> delegate,
19 const base::android::ScopedJavaGlobalRef<jobject>& japp_data)
20 : ConfirmInfoBar(delegate.Pass()),
21 japp_data_(japp_data) {
22 }
23
16 AppBannerInfoBar::AppBannerInfoBar( 24 AppBannerInfoBar::AppBannerInfoBar(
17 scoped_ptr<banners::AppBannerInfoBarDelegate> delegate, 25 scoped_ptr<banners::AppBannerInfoBarDelegate> delegate,
18 const GURL& app_url) 26 const GURL& app_url)
19 : ConfirmInfoBar(delegate.Pass()), 27 : ConfirmInfoBar(delegate.Pass()),
20 app_url_(app_url) { 28 app_url_(app_url) {
21 } 29 }
22 30
23 AppBannerInfoBar::~AppBannerInfoBar() { 31 AppBannerInfoBar::~AppBannerInfoBar() {
24 } 32 }
25 33
26 base::android::ScopedJavaLocalRef<jobject> 34 base::android::ScopedJavaLocalRef<jobject>
27 AppBannerInfoBar::CreateRenderInfoBar(JNIEnv* env) { 35 AppBannerInfoBar::CreateRenderInfoBar(JNIEnv* env) {
28 ConfirmInfoBarDelegate* app_banner_infobar_delegate = GetDelegate(); 36 ConfirmInfoBarDelegate* app_banner_infobar_delegate = GetDelegate();
29 37
30 base::android::ScopedJavaLocalRef<jstring> app_title = 38 base::android::ScopedJavaLocalRef<jstring> app_title =
31 base::android::ConvertUTF16ToJavaString( 39 base::android::ConvertUTF16ToJavaString(
32 env, app_banner_infobar_delegate->GetMessageText()); 40 env, app_banner_infobar_delegate->GetMessageText());
33 41
34 base::android::ScopedJavaLocalRef<jobject> java_bitmap; 42 base::android::ScopedJavaLocalRef<jobject> java_bitmap;
35 if (!app_banner_infobar_delegate->GetIcon().IsEmpty()) { 43 if (!app_banner_infobar_delegate->GetIcon().IsEmpty()) {
36 java_bitmap = gfx::ConvertToJavaBitmap( 44 java_bitmap = gfx::ConvertToJavaBitmap(
37 app_banner_infobar_delegate->GetIcon().ToSkBitmap()); 45 app_banner_infobar_delegate->GetIcon().ToSkBitmap());
38 } 46 }
39 47
40 base::android::ScopedJavaLocalRef<jobject> infobar; 48 base::android::ScopedJavaLocalRef<jobject> infobar;
49 if (!japp_data_.is_null()) {
50 infobar.Reset(Java_AppBannerInfoBar_createNativeAppInfoBar(
51 env,
52 reinterpret_cast<intptr_t>(this),
53 app_title.obj(),
54 java_bitmap.obj(),
55 japp_data_.obj()));
56 } else {
57 // Trim down the app URL to the domain and registry.
58 std::string trimmed_url =
59 net::registry_controlled_domains::GetDomainAndRegistry(
60 app_url_,
61 net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES);
41 62
42 // Trim down the app URL to the domain and registry. 63 base::android::ScopedJavaLocalRef<jstring> app_url =
43 std::string trimmed_url = 64 base::android::ConvertUTF8ToJavaString(env, trimmed_url);
44 net::registry_controlled_domains::GetDomainAndRegistry(
45 app_url_,
46 net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES);
47 65
48 base::android::ScopedJavaLocalRef<jstring> app_url = 66 infobar.Reset(Java_AppBannerInfoBar_createWebAppInfoBar(
49 base::android::ConvertUTF8ToJavaString(env, trimmed_url); 67 env,
50 68 reinterpret_cast<intptr_t>(this),
51 infobar.Reset(Java_AppBannerInfoBar_createWebAppInfoBar( 69 app_title.obj(),
52 env, 70 java_bitmap.obj(),
53 reinterpret_cast<intptr_t>(this), 71 app_url.obj()));
54 app_title.obj(), 72 }
55 java_bitmap.obj(),
56 app_url.obj()));
57 73
58 java_infobar_.Reset(env, infobar.obj()); 74 java_infobar_.Reset(env, infobar.obj());
59 return infobar; 75 return infobar;
60 } 76 }
61 77
62 // Native JNI methods --------------------------------------------------------- 78 // Native JNI methods ---------------------------------------------------------
63 79
64 bool RegisterAppBannerInfoBarDelegate(JNIEnv* env) { 80 bool RegisterAppBannerInfoBarDelegate(JNIEnv* env) {
65 return RegisterNativesImpl(env); 81 return RegisterNativesImpl(env);
66 } 82 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/android/infobars/app_banner_infobar.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698