| Index: chrome/browser/android/instantapps/instant_apps_settings.cc
|
| diff --git a/chrome/browser/android/instantapps/instant_apps_settings.cc b/chrome/browser/android/instantapps/instant_apps_settings.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a9b80d3249ba736d8388c6031f78aad218a7a7f7
|
| --- /dev/null
|
| +++ b/chrome/browser/android/instantapps/instant_apps_settings.cc
|
| @@ -0,0 +1,100 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/android/instantapps/instant_apps_settings.h"
|
| +
|
| +#include "base/android/jni_android.h"
|
| +#include "base/android/jni_string.h"
|
| +#include "base/time/time.h"
|
| +#include "base/values.h"
|
| +#include "chrome/browser/banners/app_banner_settings_helper.h"
|
| +#include "chrome/browser/installable/installable_logging.h"
|
| +#include "content/public/browser/web_contents.h"
|
| +#include "jni/InstantAppsSettings_jni.h"
|
| +#include "url/gurl.h"
|
| +
|
| +using base::android::JavaParamRef;
|
| +using base::android::ConvertJavaStringToUTF8;
|
| +
|
| +void InstantAppsSettings::RecordInfoBarShowEvent(
|
| + content::WebContents* web_contents,
|
| + const std::string& url) {
|
| + AppBannerSettingsHelper::RecordBannerEvent(
|
| + web_contents,
|
| + GURL(url),
|
| + AppBannerSettingsHelper::kInstantAppsKey,
|
| + AppBannerSettingsHelper::APP_BANNER_EVENT_DID_SHOW,
|
| + base::Time::Now());
|
| +}
|
| +
|
| +void InstantAppsSettings::RecordInfoBarDismissEvent(
|
| + content::WebContents* web_contents,
|
| + const std::string& url) {
|
| + AppBannerSettingsHelper::RecordBannerEvent(
|
| + web_contents,
|
| + GURL(url),
|
| + AppBannerSettingsHelper::kInstantAppsKey,
|
| + AppBannerSettingsHelper::APP_BANNER_EVENT_DID_BLOCK,
|
| + base::Time::Now());
|
| +}
|
| +
|
| +static void SetInstantAppDefault(
|
| + JNIEnv* env,
|
| + const JavaParamRef<jclass>& clazz,
|
| + const JavaParamRef<jobject>& jweb_contents,
|
| + const JavaParamRef<jstring>& jurl) {
|
| + content::WebContents* web_contents =
|
| + content::WebContents::FromJavaWebContents(jweb_contents);
|
| + DCHECK(web_contents);
|
| +
|
| + std::string url(ConvertJavaStringToUTF8(env, jurl));
|
| +
|
| + AppBannerSettingsHelper::RecordBannerEvent(
|
| + web_contents,
|
| + GURL(url),
|
| + AppBannerSettingsHelper::kInstantAppsKey,
|
| + AppBannerSettingsHelper::APP_BANNER_EVENT_DID_ADD_TO_HOMESCREEN,
|
| + base::Time::Now());
|
| +}
|
| +
|
| +static jboolean GetInstantAppDefault(
|
| + JNIEnv* env,
|
| + const JavaParamRef<jclass>& clazz,
|
| + const JavaParamRef<jobject>& jweb_contents,
|
| + const JavaParamRef<jstring>& jurl) {
|
| + content::WebContents* web_contents =
|
| + content::WebContents::FromJavaWebContents(jweb_contents);
|
| + DCHECK(web_contents);
|
| +
|
| + std::string url(ConvertJavaStringToUTF8(env, jurl));
|
| +
|
| + base::Time added_time = AppBannerSettingsHelper::GetSingleBannerEvent(
|
| + web_contents,
|
| + GURL(url),
|
| + AppBannerSettingsHelper::kInstantAppsKey,
|
| + AppBannerSettingsHelper::APP_BANNER_EVENT_DID_ADD_TO_HOMESCREEN);
|
| +
|
| + return !added_time.is_null();
|
| +}
|
| +
|
| +static jboolean ShouldShowBanner(JNIEnv* env,
|
| + const JavaParamRef<jclass>& clazz,
|
| + const JavaParamRef<jobject>& jweb_contents,
|
| + const JavaParamRef<jstring>& jurl) {
|
| + content::WebContents* web_contents =
|
| + content::WebContents::FromJavaWebContents(jweb_contents);
|
| + DCHECK(web_contents);
|
| +
|
| + std::string url(ConvertJavaStringToUTF8(env, jurl));
|
| +
|
| + return AppBannerSettingsHelper::ShouldShowBanner(
|
| + web_contents,
|
| + GURL(url),
|
| + AppBannerSettingsHelper::kInstantAppsKey,
|
| + base::Time::Now()) == InstallableStatusCode::NO_ERROR_DETECTED;
|
| +}
|
| +
|
| +bool RegisterInstantAppsSettings(JNIEnv* env) {
|
| + return RegisterNativesImpl(env);
|
| +}
|
|
|