From a93e52e77e4cccd7ca56918011dc6d7eea153dfd Mon Sep 17 00:00:00 2001 From: AlexeyBarabash Date: Mon, 3 Aug 2020 14:26:28 +0300 Subject: [PATCH] Use JNI and appSharedPreferences for store sync staging server flag --- .../developer/BraveQAPreferences.java | 47 ++++++------------- app/brave_main_delegate.cc | 27 +++-------- build/android/BUILD.gn | 1 + 3 files changed, 22 insertions(+), 53 deletions(-) diff --git a/android/java/org/chromium/chrome/browser/settings/developer/BraveQAPreferences.java b/android/java/org/chromium/chrome/browser/settings/developer/BraveQAPreferences.java index 387fedbd5d3..b72339fbb0e 100644 --- a/android/java/org/chromium/chrome/browser/settings/developer/BraveQAPreferences.java +++ b/android/java/org/chromium/chrome/browser/settings/developer/BraveQAPreferences.java @@ -28,7 +28,7 @@ import androidx.preference.Preference.OnPreferenceChangeListener; import org.chromium.base.ContextUtils; import org.chromium.base.FileUtils; import org.chromium.base.Log; -import org.chromium.base.PathUtils; +import org.chromium.base.annotations.CalledByNative; import org.chromium.chrome.R; import org.chromium.chrome.browser.BraveConfig; import org.chromium.chrome.browser.BraveRelaunchUtils; @@ -200,25 +200,33 @@ public class BraveQAPreferences extends BravePreferenceFragment mUseRewardsStagingServer = (boolean) newValue; mMaximizeAdsNumber.setEnabled((boolean) newValue); enableMaximumAdsNumber(((boolean) newValue) && mMaximizeAdsNumber.isChecked()); - } else if (PREF_USE_SYNC_STAGING_SERVER.equals(preference.getKey())) { - changeSyncServer((boolean) newValue); - BraveRelaunchUtils.askForRelaunch(getActivity()); } else if (PREF_QA_MAXIMIZE_INITIAL_ADS_NUMBER.equals(preference.getKey())) { enableMaximumAdsNumber((boolean) newValue); - } else if (PREF_QA_DEBUG_NTP.equals(preference.getKey())) { + } else if (PREF_QA_DEBUG_NTP.equals(preference.getKey()) || + PREF_USE_SYNC_STAGING_SERVER.equals(preference.getKey())) { setOnPreferenceValue(preference.getKey(), (boolean)newValue); BraveRelaunchUtils.askForRelaunch(getActivity()); } return true; } - private void setOnPreferenceValue(String preferenceName, boolean newValue) { + private static void setOnPreferenceValue(String preferenceName, boolean newValue) { SharedPreferences sharedPreferences = ContextUtils.getAppSharedPreferences(); SharedPreferences.Editor sharedPreferencesEditor = sharedPreferences.edit(); sharedPreferencesEditor.putBoolean(preferenceName, newValue); sharedPreferencesEditor.apply(); } + private static boolean getPreferenceValue(String preferenceName) { + SharedPreferences sharedPreferences = ContextUtils.getAppSharedPreferences(); + return sharedPreferences.getBoolean(preferenceName, false); + } + + @CalledByNative + public static boolean isSyncStagingUsed() { + return getPreferenceValue(PREF_USE_SYNC_STAGING_SERVER); + } + private void checkQACode() { LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); @@ -346,33 +354,6 @@ public class BraveQAPreferences extends BravePreferenceFragment } } - private String getSyncStagingServerMarkerPath() { - String dataDirectory = PathUtils.getDataDirectory(); - String markerPath = dataDirectory + "/" - + "use_staging_sync_server"; - return markerPath; - } - - private boolean isSyncStagingUsed() { - File file = new File(getSyncStagingServerMarkerPath()); - return file.exists(); - } - - private void changeSyncServer(boolean useStaging) { - File file = new File(getSyncStagingServerMarkerPath()); - if (useStaging) { - // Create marker file - try { - file.createNewFile(); - } catch (IOException e) { - Log.w("SYNC", "cannot create sync staging server marker file", e); - } - } else { - // Remove marker file - file.delete(); - } - } - private void requestRestart(boolean isImport) { DialogInterface.OnClickListener onClickListener = new DialogInterface.OnClickListener() { @Override diff --git a/app/brave_main_delegate.cc b/app/brave_main_delegate.cc index ebccca21591..ca74ccacc7f 100644 --- a/app/brave_main_delegate.cc +++ b/app/brave_main_delegate.cc @@ -10,7 +10,6 @@ #include #include "base/base_switches.h" -#include "base/files/file_util.h" #include "base/lazy_instance.h" #include "base/path_service.h" #include "base/task/post_task.h" @@ -56,7 +55,8 @@ #endif #if defined(OS_ANDROID) -#include "base/android/path_utils.h" +#include "base/android/jni_android.h" +#include "brave/build/android/jni_headers/BraveQAPreferences_jni.h" #endif namespace { @@ -253,34 +253,21 @@ bool BraveMainDelegate::BasicStartupComplete(int* exit_code) { void BraveMainDelegate::AdjustSyncServiceUrlForAndroid( std::string* brave_sync_service_url) { DCHECK_NE(brave_sync_service_url, nullptr); - const char kProcessTypeHost[] = "host"; const char kProcessTypeSwitchName[] = "type"; // On Android we can detect data dir only on host process, and we cannot // for example on renderer or gpu-process, because JNI is not initialized // And no sense to override sync service url for them in anyway - std::string process_type = kProcessTypeHost; if (base::CommandLine::ForCurrentProcess()->HasSwitch( kProcessTypeSwitchName)) { - process_type = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( - kProcessTypeSwitchName); - } - - if (process_type != kProcessTypeHost) { + // This is something other than browser process return; } - base::FilePath data_directory; - bool get_dir_result = base::android::GetDataDirectory(&data_directory); - if (!get_dir_result) { - return; - } - - const char kStagingSyncServerMarkerName[] = "use_staging_sync_server"; - base::FilePath staging_marker_path = - data_directory.Append(kStagingSyncServerMarkerName); - if (base::PathExists(staging_marker_path)) { - // we have found marker file + JNIEnv* env = base::android::AttachCurrentThread(); + bool b_use_staging_sync_server = + Java_BraveQAPreferences_isSyncStagingUsed(env); + if (b_use_staging_sync_server) { *brave_sync_service_url = kBraveSyncServiceStagingURL; } } diff --git a/build/android/BUILD.gn b/build/android/BUILD.gn index 09a258e3ca3..2464b8afb70 100755 --- a/build/android/BUILD.gn +++ b/build/android/BUILD.gn @@ -154,6 +154,7 @@ generate_jni("jni_headers") { "//brave/android/java/org/chromium/chrome/browser/preferences/BravePrefServiceBridge.java", "//brave/android/java/org/chromium/chrome/browser/preferences/website/BraveShieldsContentSettings.java", "//brave/android/java/org/chromium/chrome/browser/signin/BraveSigninManager.java", + "//brave/android/java/org/chromium/chrome/browser/settings/developer/BraveQAPreferences.java", ] if (enable_brave_sync ) {