diff --git a/android/brave_java_sources.gni b/android/brave_java_sources.gni
index dc7fed21d88..6bfd99d3d3a 100644
--- a/android/brave_java_sources.gni
+++ b/android/brave_java_sources.gni
@@ -105,6 +105,7 @@ brave_java_sources = [
"../../brave/android/java/org/chromium/chrome/browser/settings/BraveSyncScreensPreference.java",
"../../brave/android/java/org/chromium/chrome/browser/settings/ClosingAllTabsClosesBravePreference.java",
"../../brave/android/java/org/chromium/chrome/browser/settings/developer/BraveQAPreferences.java",
+ "../../brave/android/java/org/chromium/chrome/browser/settings/developer/BraveRewardsDebugPreferences.java",
"../../brave/android/java/org/chromium/chrome/browser/settings/homepage/BraveHomepageSettings.java",
"../../brave/android/java/org/chromium/chrome/browser/settings/privacy/BraveClearBrowsingDataPreferencesAdvanced.java",
"../../brave/android/java/org/chromium/chrome/browser/settings/privacy/BravePrivacySettings.java",
@@ -127,6 +128,7 @@ brave_java_sources = [
"../../brave/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayout.java",
"../../brave/android/java/org/chromium/chrome/browser/upgrade/BravePackageReplacedBroadcastReceiver.java",
"../../brave/android/java/org/chromium/chrome/browser/upgrade/BraveUpgradeJobIntentService.java",
+ "../../brave/android/java/org/chromium/chrome/browser/util/BraveDbUtil.java",
"../../brave/android/java/org/chromium/chrome/browser/util/BraveReferrer.java",
"../../brave/android/java/org/chromium/chrome/browser/util/PackageUtils.java",
"../../brave/android/java/org/chromium/chrome/browser/util/TabUtils.java",
diff --git a/android/java/org/chromium/chrome/browser/BraveActivity.java b/android/java/org/chromium/chrome/browser/BraveActivity.java
index e0c2c4066ad..b0d394e9bb3 100644
--- a/android/java/org/chromium/chrome/browser/BraveActivity.java
+++ b/android/java/org/chromium/chrome/browser/BraveActivity.java
@@ -16,6 +16,7 @@ import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Build;
import android.provider.Settings;
+import android.support.v7.app.AlertDialog;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.LayoutInflater;
@@ -48,6 +49,7 @@ import org.chromium.chrome.browser.tabmodel.TabModel;
import org.chromium.chrome.browser.tabmodel.TabModelUtils;
import org.chromium.chrome.browser.tab.TabSelectionType;
import org.chromium.chrome.browser.toolbar.top.BraveToolbarLayout;
+import org.chromium.chrome.browser.util.BraveDbUtil;
import org.chromium.chrome.browser.util.BraveReferrer;
import org.chromium.chrome.browser.util.UrlConstants;
import org.chromium.chrome.browser.preferences.BravePreferenceKeys;
@@ -455,4 +457,26 @@ public abstract class BraveActivity extends ChromeActivity {
sharedPreferencesEditor.apply();
}
}
+
+ @Override
+ public void performPreInflationStartup() {
+ BraveDbUtil dbUtil = BraveDbUtil.getInstance();
+ if (dbUtil.dbOperationRequested()) {
+ AlertDialog dialog = new AlertDialog.Builder(this)
+ .setMessage(dbUtil.performDbExportOnStart() ? "Exporting database, please wait..."
+ : "Importing database, please wait...")
+ .setCancelable(false)
+ .create();
+ dialog.setCanceledOnTouchOutside(false);
+ if (dbUtil.performDbExportOnStart()) {
+ dbUtil.setPerformDbExportOnStart(false);
+ dbUtil.ExportRewardsDb(dialog);
+ } else if (dbUtil.performDbImportOnStart() && !dbUtil.dbImportFile().isEmpty()) {
+ dbUtil.setPerformDbImportOnStart(false);
+ dbUtil.ImportRewardsDb(dialog, dbUtil.dbImportFile());
+ }
+ dbUtil.cleanUpDbOperationRequest();
+ }
+ super.performPreInflationStartup();
+ }
}
diff --git a/android/java/org/chromium/chrome/browser/settings/BravePreferenceFragment.java b/android/java/org/chromium/chrome/browser/settings/BravePreferenceFragment.java
index 517b9af0d41..bcdb1592c6d 100644
--- a/android/java/org/chromium/chrome/browser/settings/BravePreferenceFragment.java
+++ b/android/java/org/chromium/chrome/browser/settings/BravePreferenceFragment.java
@@ -5,17 +5,24 @@
package org.chromium.chrome.browser.settings;
+import android.content.Context;
+import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.v7.preference.PreferenceFragmentCompat;
+import android.os.Build;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.content.Intent;
import org.chromium.chrome.R;
+import org.chromium.base.ContextUtils;
import org.chromium.chrome.browser.ChromeTabbedActivity;
public class BravePreferenceFragment extends PreferenceFragmentCompat {
+ protected static final int STORAGE_PERMISSION_EXPORT_REQUEST_CODE = 8000;
+ protected static final int STORAGE_PERMISSION_IMPORT_REQUEST_CODE = STORAGE_PERMISSION_EXPORT_REQUEST_CODE + 1;
+
@Override
public void onActivityCreated(Bundle savedInstanceState) {
setHasOptionsMenu(true);
@@ -41,4 +48,20 @@ public class BravePreferenceFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle bundle, String s) {
}
+
+ protected boolean isStoragePermissionGranted(boolean isExport) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ Context context = ContextUtils.getApplicationContext();
+ if (context.checkSelfPermission(
+ android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
+ return true;
+ } else {
+ requestPermissions(
+ new String[] { android.Manifest.permission.WRITE_EXTERNAL_STORAGE },
+ isExport ? STORAGE_PERMISSION_EXPORT_REQUEST_CODE : STORAGE_PERMISSION_IMPORT_REQUEST_CODE);
+ return false;
+ }
+ }
+ return true;
+ }
}
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 a589ebb45b7..da687973a87 100644
--- a/android/java/org/chromium/chrome/browser/settings/developer/BraveQAPreferences.java
+++ b/android/java/org/chromium/chrome/browser/settings/developer/BraveQAPreferences.java
@@ -5,9 +5,12 @@
package org.chromium.chrome.browser.settings.developer;
+import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.PackageManager;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
@@ -30,6 +33,7 @@ import org.chromium.chrome.browser.preferences.BravePrefServiceBridge;
import org.chromium.chrome.browser.settings.BravePreferenceFragment;
import org.chromium.chrome.browser.settings.ChromeSwitchPreference;
import org.chromium.chrome.browser.settings.SettingsUtils;
+import org.chromium.chrome.browser.util.BraveDbUtil;
/**
* Settings fragment containing preferences for QA team.
@@ -42,6 +46,10 @@ public class BraveQAPreferences extends BravePreferenceFragment
private static final String PREF_QA_DEBUG_NTP= "qa_debug_ntp";
private static final String QA_ADS_PER_HOUR = "qa_ads_per_hour";
+ private static final String QA_IMPORT_REWARDS_DB = "qa_import_rewards_db";
+ private static final String QA_EXPORT_REWARDS_DB = "qa_export_rewards_db";
+
+ private static final int CHOOSE_FILE_FOR_IMPORT_REQUEST_CODE = STORAGE_PERMISSION_IMPORT_REQUEST_CODE + 1;
private static final int MAX_ADS = 50;
private static final int DEFAULT_ADS_PER_HOUR = 2;
@@ -50,6 +58,11 @@ public class BraveQAPreferences extends BravePreferenceFragment
private ChromeSwitchPreference mMaximizeAdsNumber;
private ChromeSwitchPreference mDebugNTP;
+ private Preference mImportRewardsDb;
+ private Preference mExportRewardsDb;
+ private BraveDbUtil mDbUtil;
+ private String mFileToImport;
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -71,12 +84,40 @@ public class BraveQAPreferences extends BravePreferenceFragment
if(mDebugNTP != null) {
mDebugNTP.setOnPreferenceChangeListener(this);
}
+
+ mDbUtil = BraveDbUtil.getInstance();
+
+ mImportRewardsDb = findPreference(QA_IMPORT_REWARDS_DB);
+ mExportRewardsDb = findPreference(QA_EXPORT_REWARDS_DB);
+ setRewardsDbClickListeners();
+ checkQACode();
+ }
+
+ private void setRewardsDbClickListeners() {
+ if (mImportRewardsDb != null) {
+ mImportRewardsDb.setOnPreferenceClickListener( preference -> {
+ Intent intent = new Intent()
+ .setType("*/*")
+ .setAction(Intent.ACTION_GET_CONTENT);
+
+ startActivityForResult(Intent.createChooser(intent, "Select a file"), CHOOSE_FILE_FOR_IMPORT_REQUEST_CODE);
+ return true;
+ });
+ }
+
+ if (mExportRewardsDb != null) {
+ mExportRewardsDb.setOnPreferenceClickListener( preference -> {
+ if (isStoragePermissionGranted(true)) {
+ requestRestart(false);
+ }
+ return true;
+ });
+ }
}
@Override
public void onStart() {
BraveRewardsNativeWorker.getInstance().AddObserver(this);
- checkQACode();
super.onStart();
}
@@ -176,49 +217,6 @@ public class BraveQAPreferences extends BravePreferenceFragment
BraveRewardsNativeWorker.getInstance().SetAdsPerHour(adsPerHour);
}
- @Override
- public void OnWalletInitialized(int error_code) {}
-
- @Override
- public void OnWalletProperties(int error_code) {}
-
- @Override
- public void OnPublisherInfo(int tabId) {}
-
- @Override
- public void OnGetCurrentBalanceReport(double[] report) {}
-
- @Override
- public void OnNotificationAdded(String id, int type, long timestamp, String[] args) {}
-
- @Override
- public void OnNotificationsCount(int count) {}
-
- @Override
- public void OnGetLatestNotification(String id, int type, long timestamp, String[] args) {}
-
- @Override
- public void OnNotificationDeleted(String id) {}
-
- @Override
- public void OnIsWalletCreated(boolean created) {}
-
- @Override
- public void OnGetPendingContributionsTotal(double amount) {}
-
- @Override
- public void OnGetRewardsMainEnabled(boolean enabled) {
- }
-
- @Override
- public void OnGetAutoContributeProps() {}
-
- @Override
- public void OnGetReconcileStamp(long timestamp) {}
-
- @Override
- public void OnRecurringDonationUpdated() {}
-
@Override
public void OnResetTheWholeState(boolean success) {
if (success) {
@@ -234,12 +232,57 @@ public class BraveQAPreferences extends BravePreferenceFragment
}
}
- @Override
- public void OnRewardsMainEnabled(boolean enabled) {}
-
- @Override
- public void OnFetchPromotions() {}
-
@Override
public void onCreatePreferences(Bundle bundle, String s) {}
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ if (STORAGE_PERMISSION_EXPORT_REQUEST_CODE == requestCode) {
+ requestRestart(false);
+ } else if (STORAGE_PERMISSION_IMPORT_REQUEST_CODE == requestCode) {
+ requestRestart(true);
+ }
+ }
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ if (requestCode == CHOOSE_FILE_FOR_IMPORT_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
+ mFileToImport = data.getData().getPath();
+ String pathParts[] = mFileToImport.split(":");
+ if (pathParts.length == 2) {
+ mFileToImport = pathParts[1];
+ }
+ if (isStoragePermissionGranted(false)) {
+ requestRestart(true);
+ }
+ }
+ }
+
+ private void requestRestart(boolean isImport) {
+ DialogInterface.OnClickListener onClickListener = new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int button) {
+ if (button == AlertDialog.BUTTON_POSITIVE) {
+ if (isImport) {
+ mDbUtil.setPerformDbImportOnStart(true);
+ mDbUtil.setDbImportFile(mFileToImport);
+ } else {
+ mDbUtil.setPerformDbExportOnStart(true);
+ }
+ BraveRelaunchUtils.restart();
+ }
+ }
+ };
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity(), R.style.Theme_Chromium_AlertDialog)
+ .setMessage(
+ "This operation requires restart. Would you like to restart application and start operation?")
+ .setPositiveButton(R.string.ok, onClickListener).setNegativeButton(R.string.cancel, onClickListener);
+ Dialog dialog = alertDialog.create();
+ dialog.setCanceledOnTouchOutside(false);
+ dialog.show();
+ }
}
diff --git a/android/java/org/chromium/chrome/browser/settings/developer/BraveRewardsDebugPreferences.java b/android/java/org/chromium/chrome/browser/settings/developer/BraveRewardsDebugPreferences.java
new file mode 100644
index 00000000000..876996821c6
--- /dev/null
+++ b/android/java/org/chromium/chrome/browser/settings/developer/BraveRewardsDebugPreferences.java
@@ -0,0 +1,79 @@
+/* Copyright (c) 2020 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.settings.developer;
+
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.support.v7.app.AlertDialog;
+import android.support.v7.preference.Preference;
+
+import org.chromium.chrome.R;
+import org.chromium.chrome.browser.BraveRelaunchUtils;
+import org.chromium.chrome.browser.settings.BravePreferenceFragment;
+import org.chromium.chrome.browser.settings.SettingsUtils;
+import org.chromium.chrome.browser.util.BraveDbUtil;
+
+/**
+ * Settings fragment containing preferences for QA team.
+ */
+public class BraveRewardsDebugPreferences extends BravePreferenceFragment {
+ private static final String QA_EXPORT_REWARDS_DB = "export_rewards_db";
+
+ private Preference mExportRewardsDb;
+ private BraveDbUtil mDbUtil;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ SettingsUtils.addPreferencesFromResource(this, R.xml.brave_rewards_debug_preferences);
+
+ mDbUtil = BraveDbUtil.getInstance();
+ mExportRewardsDb = findPreference(QA_EXPORT_REWARDS_DB);
+ setRewardsDbClickListeners();
+ }
+
+ private void setRewardsDbClickListeners() {
+ if (mExportRewardsDb != null) {
+ mExportRewardsDb.setOnPreferenceClickListener(preference -> {
+ if (isStoragePermissionGranted(true)) {
+ requestRestart();
+ }
+ return true;
+ });
+ }
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ if (STORAGE_PERMISSION_EXPORT_REQUEST_CODE == requestCode) {
+ requestRestart();
+ }
+ }
+ }
+
+ private void requestRestart() {
+ DialogInterface.OnClickListener onClickListener = new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int button) {
+ if (button == AlertDialog.BUTTON_POSITIVE) {
+ mDbUtil.setPerformDbExportOnStart(true);
+ BraveRelaunchUtils.restart();
+ }
+ }
+ };
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity(), R.style.Theme_Chromium_AlertDialog)
+ .setMessage(
+ "This operation requires restart. Would you like to restart application and start operation?")
+ .setPositiveButton(R.string.ok, onClickListener).setNegativeButton(R.string.cancel, onClickListener);
+ Dialog dialog = alertDialog.create();
+ dialog.setCanceledOnTouchOutside(false);
+ dialog.show();
+ }
+}
diff --git a/android/java/org/chromium/chrome/browser/util/BraveDbUtil.java b/android/java/org/chromium/chrome/browser/util/BraveDbUtil.java
new file mode 100644
index 00000000000..a31a3478ba9
--- /dev/null
+++ b/android/java/org/chromium/chrome/browser/util/BraveDbUtil.java
@@ -0,0 +1,192 @@
+/**
+ * Copyright (c) 2020 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.util;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Environment;
+import android.text.TextUtils;
+import android.widget.Toast;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.IOException;
+import java.lang.SecurityException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.chromium.base.ContextUtils;
+import org.chromium.base.FileUtils;
+import org.chromium.base.Log;
+
+public class BraveDbUtil {
+ private static final String TAG = "BraveDbUtil";
+ private static final String PUBLISHER_INFO_DB = "publisher_info_db";
+ private static final String REWARDS_DB_SRC_DIR = "app_chrome/Default";
+ private static final String REWARDS_DB_DST_DIR = "rewards";
+ private static final String PREF_PERFORM_DB_EXPORT_ON_START = "perform_db_export_on_start";
+ private static final String PREF_PERFORM_DB_IMPORT_ON_START = "perform_db_import_on_start";
+ private static final String PREF_DB_IMPORT_FILE = "db_import_file";
+
+ private String mRewardsSrc;
+ private String mRewardsDst;
+ private String mRewardsDstDir;
+
+ private static BraveDbUtil sInstance;
+
+ private BraveDbUtil() {
+ }
+
+ public static BraveDbUtil getInstance() {
+ if (sInstance != null)
+ return sInstance;
+ sInstance = new BraveDbUtil();
+ return sInstance;
+ }
+
+ public void ExportRewardsDb(Dialog dlg) {
+ Context context = ContextUtils.getApplicationContext();
+ mRewardsSrc = context.getApplicationInfo().dataDir + File.separator + REWARDS_DB_SRC_DIR + File.separator
+ + PUBLISHER_INFO_DB;
+
+ mRewardsDstDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
+ .getAbsolutePath() + File.separator + REWARDS_DB_DST_DIR;
+
+ SimpleDateFormat dateFormat = new SimpleDateFormat("-yyyy-MM-dd-HHmmss");
+ mRewardsDst = mRewardsDstDir + File.separator + PUBLISHER_INFO_DB + dateFormat.format(new Date());
+
+ copyRewardsDbThread(dlg, false);
+ }
+
+ public void ImportRewardsDb(Dialog dlg, String fileToImport) {
+ Context context = ContextUtils.getApplicationContext();
+ mRewardsDst = context.getApplicationInfo().dataDir + File.separator + REWARDS_DB_SRC_DIR + File.separator
+ + PUBLISHER_INFO_DB;
+
+ mRewardsSrc = fileToImport.isEmpty()
+ ? Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath()
+ + File.separator + REWARDS_DB_DST_DIR + File.separator + PUBLISHER_INFO_DB
+ : fileToImport;
+
+ mRewardsDstDir = "";
+
+ copyRewardsDbThread(dlg, true);
+ }
+
+ private void copyRewardsDbThread(Dialog dlg, boolean isImport) {
+ if (dlg != null)
+ dlg.show();
+
+ if (isImport) {
+ File file = new File(mRewardsDst);
+ boolean file_deleted = file.delete();
+ File file_journal = new File(mRewardsDst + "-journal");
+ boolean file_journal_deleted = file_journal.delete();
+ }
+
+ String erroMsg = "";
+
+ // Create dest dir if necessary
+ if (!TextUtils.isEmpty(mRewardsDstDir)) {
+ if (!createDstDir(mRewardsDstDir)) {
+ erroMsg = "Failed to create destination directory for database operation";
+ }
+ }
+
+ // No errors so far: copy the file
+ if (TextUtils.isEmpty(erroMsg)) {
+ boolean succeeded = copyFile(mRewardsSrc, mRewardsDst);
+ if (!succeeded) {
+ erroMsg = "Failed to copy database file";
+ }
+ }
+
+ // Update UI
+ final String msg = (!TextUtils.isEmpty(erroMsg)) ? erroMsg
+ : "Database successfully " + (isImport ? "imported" : "exported");
+ if (dlg != null)
+ dlg.dismiss();
+ Context context = ContextUtils.getApplicationContext();
+ Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
+ }
+
+ private boolean copyFile(String src, String dst) {
+ boolean succeeded = false;
+ try {
+ InputStream in = new FileInputStream(src);
+ FileUtils.copyStreamToFile(in, new File(dst));
+ succeeded = true;
+ in.close();
+ } catch (IOException e) {
+ Log.e(TAG, "Error on copying database file: " + e);
+ }
+ return succeeded;
+ }
+
+ private boolean createDstDir(String dir) {
+ boolean succeeded = false;
+ File dst = new File(dir);
+ try {
+ if (!dst.exists()) {
+ succeeded = dst.mkdirs();
+ } else {
+ succeeded = true;
+ }
+ } catch (SecurityException e) {
+ succeeded = false;
+ }
+ return succeeded;
+ }
+
+ public boolean performDbExportOnStart() {
+ if (ContextUtils.getAppSharedPreferences() == null)
+ return false;
+ return ContextUtils.getAppSharedPreferences().getBoolean(PREF_PERFORM_DB_EXPORT_ON_START, false);
+ }
+
+ public void setPerformDbExportOnStart(boolean value) {
+ if (ContextUtils.getAppSharedPreferences() == null)
+ return;
+ ContextUtils.getAppSharedPreferences().edit().putBoolean(PREF_PERFORM_DB_EXPORT_ON_START, value).apply();
+ }
+
+ public boolean performDbImportOnStart() {
+ if (ContextUtils.getAppSharedPreferences() == null)
+ return false;
+ return ContextUtils.getAppSharedPreferences().getBoolean(PREF_PERFORM_DB_IMPORT_ON_START, false);
+ }
+
+ public void setPerformDbImportOnStart(boolean value) {
+ if (ContextUtils.getAppSharedPreferences() == null)
+ return;
+ ContextUtils.getAppSharedPreferences().edit().putBoolean(PREF_PERFORM_DB_IMPORT_ON_START, value).apply();
+ }
+
+ public String dbImportFile() {
+ if (ContextUtils.getAppSharedPreferences() == null)
+ return "";
+ return ContextUtils.getAppSharedPreferences().getString(PREF_DB_IMPORT_FILE, "");
+ }
+
+ public void setDbImportFile(String file) {
+ if (ContextUtils.getAppSharedPreferences() == null)
+ return;
+ ContextUtils.getAppSharedPreferences().edit().putString(PREF_DB_IMPORT_FILE, file).apply();
+ }
+
+ public boolean dbOperationRequested() {
+ return performDbExportOnStart() || (performDbImportOnStart() && !dbImportFile().isEmpty());
+ }
+
+ public void cleanUpDbOperationRequest() {
+ setPerformDbExportOnStart(false);
+ setPerformDbImportOnStart(false);
+ setDbImportFile("");
+ }
+}
diff --git a/android/java/res/xml/brave_rewards_debug_preferences.xml b/android/java/res/xml/brave_rewards_debug_preferences.xml
new file mode 100644
index 00000000000..74576c1b2fe
--- /dev/null
+++ b/android/java/res/xml/brave_rewards_debug_preferences.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
diff --git a/android/java/res/xml/developer_preferences.xml b/android/java/res/xml/developer_preferences.xml
index b73cc9d8af4..3f5b054d53a 100644
--- a/android/java/res/xml/developer_preferences.xml
+++ b/android/java/res/xml/developer_preferences.xml
@@ -24,4 +24,8 @@
android:fragment="org.chromium.chrome.browser.settings.developer.BraveQAPreferences"
android:key="qa_preferences"
android:title="QA Preferences"/>
+
diff --git a/android/java/res/xml/qa_preferences.xml b/android/java/res/xml/qa_preferences.xml
index 793dd8cb46a..83f9058b59e 100644
--- a/android/java/res/xml/qa_preferences.xml
+++ b/android/java/res/xml/qa_preferences.xml
@@ -26,5 +26,13 @@
android:summaryOn="@string/text_on"
android:summaryOff="@string/text_off"
android:defaultValue="false" />
-
+
+
+
+
+