1 // Copyright (c) 2012 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 #ifndef CONTENT_BROWSER_ANDROID_INTERSTITIAL_PAGE_DELEGATE_ANDROID_H_ 6 #define CONTENT_BROWSER_ANDROID_INTERSTITIAL_PAGE_DELEGATE_ANDROID_H_ 7 8 #include <jni.h> 9 #include <string> 10 11 #include "base/android/jni_weak_ref.h" 12 #include "base/basictypes.h" 13 #include "base/compiler_specific.h" 14 #include "content/common/content_export.h" 15 #include "content/public/browser/interstitial_page_delegate.h" 16 17 namespace content { 18 19 class InterstitialPage; 20 class WebContents; 21 22 // Native counterpart that allows interstitial pages to be constructed and 23 // managed from Java. 24 class InterstitialPageDelegateAndroid : public InterstitialPageDelegate { 25 public: 26 InterstitialPageDelegateAndroid(JNIEnv* env, 27 jobject obj, 28 const std::string& html_content); 29 virtual ~InterstitialPageDelegateAndroid(); 30 set_interstitial_page(InterstitialPage * page)31 void set_interstitial_page(InterstitialPage* page) { page_ = page; } 32 33 // Methods called from Java. 34 void Proceed(JNIEnv* env, jobject obj); 35 void DontProceed(JNIEnv* env, jobject obj); 36 37 // Implementation of InterstitialPageDelegate 38 virtual std::string GetHTMLContents() OVERRIDE; 39 virtual void OnProceed() OVERRIDE; 40 virtual void OnDontProceed() OVERRIDE; 41 virtual void CommandReceived(const std::string& command) OVERRIDE; 42 43 static bool RegisterInterstitialPageDelegateAndroid(JNIEnv* env); 44 45 private: 46 JavaObjectWeakGlobalRef weak_java_obj_; 47 48 std::string html_content_; 49 InterstitialPage* page_; // Owns this. 50 51 DISALLOW_COPY_AND_ASSIGN(InterstitialPageDelegateAndroid); 52 }; 53 54 } // namespace content 55 56 #endif // CONTENT_BROWSER_ANDROID_INTERSTITIAL_PAGE_DELEGATE_ANDROID_H_ 57