Use JNI and appSharedPreferences for store sync staging server flag

This commit is contained in:
AlexeyBarabash
2020-08-03 21:45:55 +03:00
parent 4d707e67e0
commit a93e52e77e
3 changed files with 22 additions and 53 deletions
@@ -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
+7 -20
View File
@@ -10,7 +10,6 @@
#include <unordered_set>
#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;
}
}
+1
View File
@@ -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 ) {