1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/ui/android/infobars/data_reduction_proxy_infobar.h" 6 7 #include "base/android/jni_android.h" 8 #include "base/android/jni_string.h" 9 #include "base/logging.h" 10 #include "chrome/browser/android/resource_mapper.h" 11 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_infobar_delegate.h" 12 #include "content/public/browser/web_contents.h" 13 #include "jni/DataReductionProxyInfoBarDelegate_jni.h" 14 15 // DataReductionProxyInfoBar: 16 17 // static 18 void DataReductionProxyInfoBar::Launch( 19 JNIEnv* env, jclass, jobject jweb_contents, jstring jlink_url) { 20 content::WebContents* web_contents = 21 content::WebContents::FromJavaWebContents(jweb_contents); 22 DCHECK(web_contents); 23 DataReductionProxyInfoBarDelegate::Create( 24 web_contents, base::android::ConvertJavaStringToUTF8(env, jlink_url)); 25 } 26 27 // static 28 bool DataReductionProxyInfoBar::Register(JNIEnv* env) { 29 return RegisterNativesImpl(env); 30 } 31 32 DataReductionProxyInfoBar::DataReductionProxyInfoBar( 33 scoped_ptr<DataReductionProxyInfoBarDelegate> delegate) 34 : ConfirmInfoBar(delegate.PassAs<ConfirmInfoBarDelegate>()), 35 java_data_reduction_proxy_delegate_() { 36 } 37 38 DataReductionProxyInfoBar::~DataReductionProxyInfoBar() { 39 } 40 41 base::android::ScopedJavaLocalRef<jobject> 42 DataReductionProxyInfoBar::CreateRenderInfoBar(JNIEnv* env) { 43 java_data_reduction_proxy_delegate_.Reset( 44 Java_DataReductionProxyInfoBarDelegate_create(env)); 45 46 return Java_DataReductionProxyInfoBarDelegate_showDataReductionProxyInfoBar( 47 env, 48 java_data_reduction_proxy_delegate_.obj(), 49 reinterpret_cast<intptr_t>(this), 50 GetEnumeratedIconId()); 51 } 52 53 DataReductionProxyInfoBarDelegate* DataReductionProxyInfoBar::GetDelegate() { 54 return static_cast<DataReductionProxyInfoBarDelegate*>(delegate()); 55 } 56 57 58 // DataReductionProxyInfoBarDelegate: 59 60 // static 61 scoped_ptr<infobars::InfoBar> DataReductionProxyInfoBarDelegate::CreateInfoBar( 62 scoped_ptr<DataReductionProxyInfoBarDelegate> delegate) { 63 return scoped_ptr<infobars::InfoBar>( 64 new DataReductionProxyInfoBar(delegate.Pass())); 65 } 66 67 68 // JNI for DataReductionProxyInfoBarDelegate. 69 void 70 Launch(JNIEnv* env, jclass clazz, jobject jweb_contents, jstring jlink_url) { 71 DataReductionProxyInfoBar::Launch(env, clazz, jweb_contents, jlink_url); 72 } 73