From 8ecdac337997f94a20227a541bc24515849a0cc3 Mon Sep 17 00:00:00 2001 From: Jocelyn Liu Date: Thu, 10 Oct 2019 11:35:47 -0700 Subject: [PATCH] Add BraveRewards feature flag for android --- android/brave_java_sources.gni | 1 + .../chrome/browser/BraveFeatureList.java | 10 +++++ .../browser/android/chrome_feature_list.cc | 38 +++++++++++++++++++ common/BUILD.gn | 2 + common/brave_features.cc | 22 +++++++++++ common/brave_features.h | 22 +++++++++++ ...owser-android-chrome_feature_list.cc.patch | 12 ++++++ 7 files changed, 107 insertions(+) create mode 100644 android/java/org/chromium/chrome/browser/BraveFeatureList.java create mode 100644 chromium_src/chrome/browser/android/chrome_feature_list.cc create mode 100644 common/brave_features.cc create mode 100644 common/brave_features.h create mode 100644 patches/chrome-browser-android-chrome_feature_list.cc.patch diff --git a/android/brave_java_sources.gni b/android/brave_java_sources.gni index c4dfbaa500ec..bcff0d91be40 100644 --- a/android/brave_java_sources.gni +++ b/android/brave_java_sources.gni @@ -6,6 +6,7 @@ brave_java_sources = [ "../../brave/android/java/org/chromium/chrome/browser/BraveActivity.java", "../../brave/android/java/org/chromium/chrome/browser/BraveBadge.java", + "../../brave/android/java/org/chromium/chrome/browser/BraveFeatureList.java", "../../brave/android/java/org/chromium/chrome/browser/BraveRelaunchUtils.java", "../../brave/android/java/org/chromium/chrome/browser/appmenu/BraveAppMenuPropertiesDelegateImpl.java", "../../brave/android/java/org/chromium/chrome/browser/appmenu/BraveShieldsMenuAdapter.java", diff --git a/android/java/org/chromium/chrome/browser/BraveFeatureList.java b/android/java/org/chromium/chrome/browser/BraveFeatureList.java new file mode 100644 index 000000000000..aed06a895572 --- /dev/null +++ b/android/java/org/chromium/chrome/browser/BraveFeatureList.java @@ -0,0 +1,10 @@ +/* Copyright (c) 2019 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.chromium.chrome.browser; + +public abstract class BraveFeatureList { + public static final String BRAVE_REWARDS = "BraveRewards"; +} diff --git a/chromium_src/chrome/browser/android/chrome_feature_list.cc b/chromium_src/chrome/browser/android/chrome_feature_list.cc new file mode 100644 index 000000000000..bb4d2de4e3d7 --- /dev/null +++ b/chromium_src/chrome/browser/android/chrome_feature_list.cc @@ -0,0 +1,38 @@ +/* Copyright (c) 2019 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "brave/common/brave_features.h" + +namespace chrome { +namespace android { + +namespace { + +const base::Feature* kBraveFeaturesExposedToJava[] = { + &features::kBraveRewards, +}; + +const base::Feature* BraveFindFeatureExposedToJava( + const std::string& feature_name) { + for (size_t i = 0; i < base::size(kBraveFeaturesExposedToJava); ++i) { + if (kBraveFeaturesExposedToJava[i]->name == feature_name) + return kBraveFeaturesExposedToJava[i]; + } + + return nullptr; +} + +} // namespace + +} // namespace android +} // namespace chrome + +#define BRAVE_FIND_FEATURE_EXPOSED_TO_JAVA \ + const base::Feature* feature = BraveFindFeatureExposedToJava(feature_name); \ + if (feature) \ + return feature; + +#include "../../../../../chrome/browser/android/chrome_feature_list.cc" +#undef BRAVE_FIND_FEATURE_EXPOSED_TO_JAVA diff --git a/common/BUILD.gn b/common/BUILD.gn index 574fe5434f10..da70d17560b0 100644 --- a/common/BUILD.gn +++ b/common/BUILD.gn @@ -40,6 +40,8 @@ source_set("common") { sources = [ "brave_content_client.cc", "brave_content_client.h", + "brave_features.cc", + "brave_features.h", "brave_isolated_worlds.h", "brave_paths.cc", "brave_paths.h", diff --git a/common/brave_features.cc b/common/brave_features.cc new file mode 100644 index 000000000000..3eb1ce3d8220 --- /dev/null +++ b/common/brave_features.cc @@ -0,0 +1,22 @@ +/* Copyright (c) 2019 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "brave/common/brave_features.h" +#include "build/build_config.h" + +namespace features { + +#if defined(OS_ANDROID) +// Flag for Brave Rewards. +#if defined(ARCH_CPU_X86_FAMILY) && defined(OFFICIAL_BUILD) +const base::Feature kBraveRewards{"BraveRewards", + base::FEATURE_DISABLED_BY_DEFAULT}; +#else +const base::Feature kBraveRewards{"BraveRewards", + base::FEATURE_ENABLED_BY_DEFAULT}; +#endif +#endif // defined(OS_ANDROID) + +} // namespace features diff --git a/common/brave_features.h b/common/brave_features.h new file mode 100644 index 000000000000..79ff9bb76a1f --- /dev/null +++ b/common/brave_features.h @@ -0,0 +1,22 @@ +/* Copyright (c) 2019 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef BRAVE_COMMON_BRAVE_FEATURES_H_ +#define BRAVE_COMMON_BRAVE_FEATURES_H_ + +#include "base/component_export.h" +#include "base/feature_list.h" +#include "build/build_config.h" + +namespace features { + +#if defined(OS_ANDROID) +COMPONENT_EXPORT(CHROME_FEATURES) +extern const base::Feature kBraveRewards; +#endif // defined(OS_ANDROID) + +} // namespace features + +#endif // BRAVE_COMMON_BRAVE_FEATURES_H_ diff --git a/patches/chrome-browser-android-chrome_feature_list.cc.patch b/patches/chrome-browser-android-chrome_feature_list.cc.patch new file mode 100644 index 000000000000..274583f41838 --- /dev/null +++ b/patches/chrome-browser-android-chrome_feature_list.cc.patch @@ -0,0 +1,12 @@ +diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc +index 5a292bf4825f48e20513bcf6b313e080b0db5a9a..4e696dd969003256dae6ad2aa51e34b3f5f3d7f4 100644 +--- a/chrome/browser/android/chrome_feature_list.cc ++++ b/chrome/browser/android/chrome_feature_list.cc +@@ -220,6 +220,7 @@ const base::Feature* kFeaturesExposedToJava[] = { + }; + + const base::Feature* FindFeatureExposedToJava(const std::string& feature_name) { ++ BRAVE_FIND_FEATURE_EXPOSED_TO_JAVA + for (size_t i = 0; i < base::size(kFeaturesExposedToJava); ++i) { + if (kFeaturesExposedToJava[i]->name == feature_name) + return kFeaturesExposedToJava[i];