Add new certificateProvider extension API.
[chromium-blink-merge.git] / chrome / browser / android / banners / app_banner_manager_android.h
blob4fd358b9a42891e9cc15bf184e8b745c13772bbb
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
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_ANDROID_BANNERS_APP_BANNER_MANAGER_ANDROID_H_
6 #define CHROME_BROWSER_ANDROID_BANNERS_APP_BANNER_MANAGER_ANDROID_H_
8 #include "base/android/jni_android.h"
9 #include "base/android/jni_weak_ref.h"
10 #include "base/memory/weak_ptr.h"
11 #include "chrome/browser/android/banners/app_banner_data_fetcher_android.h"
12 #include "chrome/browser/banners/app_banner_debug_log.h"
13 #include "chrome/browser/banners/app_banner_manager.h"
15 namespace banners {
16 class AppBannerDataFetcherAndroid;
18 // Extends the AppBannerManager to support native Android apps.
19 // TODO(dfalcantara): Flip it so the C++ AppBannerManagerAndroid owns the
20 // Java AppBannerManager, move ownership of the AppBannerManagerAndroid to
21 // the TabAndroid class, then move functions for retriving info from Java to
22 // the AppBannerDataFetcherAndroid.
23 class AppBannerManagerAndroid : public AppBannerManager {
24 public:
25 // Registers native methods.
26 static bool Register(JNIEnv* env);
28 AppBannerManagerAndroid(JNIEnv* env,
29 jobject obj,
30 int ideal_splash_image_size_in_dp,
31 int ideal_icon_size_in_dp);
32 ~AppBannerManagerAndroid() override;
34 // Destroys the AppBannerManagerAndroid.
35 void Destroy(JNIEnv* env, jobject obj);
37 // Observes a new WebContents, if necessary.
38 void ReplaceWebContents(JNIEnv* env,
39 jobject obj,
40 jobject jweb_contents);
42 // Return whether a BitmapFetcher is active.
43 bool IsFetcherActive(JNIEnv* env, jobject jobj);
45 // Called when the Java-side has retrieved information for the app.
46 // Returns |false| if an icon fetch couldn't be kicked off.
47 bool OnAppDetailsRetrieved(JNIEnv* env,
48 jobject obj,
49 jobject japp_data,
50 jstring japp_title,
51 jstring japp_package,
52 jstring jicon_url);
54 protected:
55 AppBannerDataFetcher* CreateAppBannerDataFetcher(
56 base::WeakPtr<AppBannerDataFetcher::Delegate> weak_delegate,
57 const int ideal_icon_size_in_dp) override;
59 private:
60 // AppBannerDataFetcher::Delegate overrides.
61 bool HandleNonWebApp(const std::string& platform,
62 const GURL& url,
63 const std::string& id) override;
65 bool CheckPlatformAndId(const std::string& platform, const std::string& id);
67 bool CheckFetcherMatchesContents();
69 std::string ExtractQueryValueForName(const GURL& url,
70 const std::string& name);
72 // Ideal splash screen image size to use.
73 const int ideal_splash_image_size_in_dp_;
75 // AppBannerManager on the Java side.
76 JavaObjectWeakGlobalRef weak_java_banner_view_manager_;
78 DISALLOW_COPY_AND_ASSIGN(AppBannerManagerAndroid);
79 }; // class AppBannerManagerAndroid
81 } // namespace banners
83 #endif // CHROME_BROWSER_ANDROID_BANNERS_APP_BANNER_MANAGER_ANDROID_H_