Home | History | Annotate | Download | only in infobars
      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