@ -18,13 +18,13 @@ Completely remove contacts picker permission from the file dialog
chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java | 22
chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java | 8
chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java | 2
chrome/browser/BUILD.gn | 6
chrome/browser/BUILD.gn | 11
chrome/browser/about_flags.cc | 6
chrome/browser/android/bookmarks/bookmark_bridge.cc | 285 ++++++++++
chrome/browser/android/bookmarks/bookmark_bridge.cc | 284 ++++++++++
chrome/browser/android/bookmarks/bookmark_bridge.h | 28
chrome/browser/bookmarks/bookmark_html_writer.cc | 8
chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java | 8
chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java | 10
chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java | 8
chrome/browser/flag_descriptions.cc | 5
chrome/browser/flag_descriptions.h | 3
chrome/browser/flags/android/chrome_feature_list.cc | 5
@ -43,7 +43,7 @@ Completely remove contacts picker permission from the file dialog
ui/shell_dialogs/select_file_dialog.h | 2
ui/shell_dialogs/select_file_dialog_android.cc | 6
ui/shell_dialogs/select_file_dialog_android.h | 2
37 files changed, 877 insertions(+), 24 deletions(-)
37 files changed, 880 insertions(+), 23 deletions(-)
--- a/base/android/content_uri_utils.cc
+++ b/base/android/content_uri_utils.cc
@ -267,11 +267,10 @@ Completely remove contacts picker permission from the file dialog
*/
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
@@ -4,7 +4,20 @@
@@ -4,7 +4,19 @@
package org.chromium.chrome.browser.bookmarks;
+import android.app.Activity;
+import android.content.Intent;
+import android.content.Context;
+import android.content.pm.PackageManager;
@ -288,7 +287,7 @@ Completely remove contacts picker permission from the file dialog
import android.text.TextUtils;
import android.util.Pair;
@@ -27,8 +40 ,33 @@ import org.chromium.components.url_forma
@@ -27,8 +39 ,33 @@ import org.chromium.components.url_forma
import org.chromium.content_public.browser.WebContents;
import org.chromium.url.GURL;
@ -322,7 +321,7 @@ Completely remove contacts picker permission from the file dialog
/**
* Provides the communication channel for Android to fetch and manipulate the
@@ -587,6 +625,209 @@ public class BookmarkBridge {
@@ -587,6 +624,210 @@ public class BookmarkBridge {
}
/**
@ -476,7 +475,8 @@ Completely remove contacts picker permission from the file dialog
+ mCustomView = (DownloadLocationCustomView) LayoutInflater.from(mContext).inflate(
+ R.layout.download_location_dialog, null);
+ mCustomView.initialize(
+ DownloadLocationDialogType.DEFAULT, /*totalBytes*/ 0);
+ DownloadLocationDialogType.DEFAULT, new File(standardBoorkmarkName),
+ /*totalBytes*/ 0, context.getString(R.string.export_bookmarks_alert_title));
+ mCustomView.mDontShowAgain.setVisibility(View.GONE);
+
+ Resources resources = mContext.getResources();
@ -684,27 +684,32 @@ Completely remove contacts picker permission from the file dialog
initWithView(mManager.getView());
--- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
@@ -101,7 +101 ,7 @@ public class NativePageFactory {
@@ -176,7 +176 ,7 @@ public class NativePageFactory {
protected NativePage buildBookmarksPage(Tab tab) {
return new BookmarkPage(mActivity.getComponentName(), mActivity.get SnackbarManager(),
mActivity.get TabModelSelector() .isIncognitoSelected(),
- new TabShim(tab, mActivity ));
+ new TabShim(tab, mActivity ), mActivity);
return new BookmarkPage(mActivity.getComponentName(), mSnackbarManagerSupplier.get (),
mTabModelSelector.isIncognitoSelected(),
- new TabShim(tab, mBrowserControlsManager, mTabModelSelector ));
+ new TabShim(tab, mBrowserControlsManager, mTabModelSelector ), mActivity);
}
protected NativePage buildDownloadsPage(Tab tab) {
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -1856,6 +1856,8 @@ static_library("browser") {
"webid/federated_identity_sharing_permission_context_factory.h",
"window_placement/window_placement_permission_context.cc",
@@ -1833,6 +1833,13 @@ static_library("browser") {
"window_placement/window_placement_permission_context.h",
+ "importer/profile_writer.cc",
+ "importer/profile_writer.h",
]
+ if (is_android) {
+ sources += [
+ "importer/profile_writer.cc",
+ "importer/profile_writer.h",
+ ]
+ }
+
configs += [
@@ -2962,6 +2964,8 @@ static_library("browser") {
"//build/config/compiler:wexit_time_destructors",
"//build/config:precompiled_headers",
@@ -2944,6 +2951,8 @@ static_library("browser") {
"autofill/manual_filling_view_interface.h",
"banners/android/chrome_app_banner_manager_android.cc",
"banners/android/chrome_app_banner_manager_android.h",
@ -713,7 +718,7 @@ Completely remove contacts picker permission from the file dialog
"browser_process_platform_part_android.cc",
"browser_process_platform_part_android.h",
"chrome_browser_field_trials_mobile.cc",
@@ -3485,8 +3489 ,6 @@ static_library("browser") {
@@ -3478,8 +3487 ,6 @@ static_library("browser") {
"badging/badge_manager_factory.h",
"banners/app_banner_manager_desktop.cc",
"banners/app_banner_manager_desktop.h",
@ -724,9 +729,9 @@ Completely remove contacts picker permission from the file dialog
"browsing_data/chrome_browsing_data_lifetime_manager_factory.cc",
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -7379 ,6 +7379 ,12 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kPlaybackSpeedButtonDescription, kOsAll ,
FEATURE_VALUE_TYPE(media::kPlaybackSpeedButton)},
@@ -762 3,6 +762 3,12 @@ const FeatureEntry kFeatureEntries[] = {
FEATURE_VALUE_TYPE(features::kShareUsageRanking)} ,
#endif
+ {"export-bookmarks-use-saf",
+ flag_descriptions::kBookmarksExportUseSafName,
@ -739,15 +744,7 @@ Completely remove contacts picker permission from the file dialog
// Histograms" in tools/metrics/histograms/README.md (run the
--- a/chrome/browser/android/bookmarks/bookmark_bridge.cc
+++ b/chrome/browser/android/bookmarks/bookmark_bridge.cc
@@ -21,6 +21,7 @@
#include "base/containers/stack.h"
#include "base/guid.h"
#include "base/i18n/string_compare.h"
+#include "base/strings/string_piece.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/android/chrome_jni_headers/BookmarkBridge_jni.h"
#include "chrome/browser/android/bookmarks/partner_bookmarks_reader.h"
@@ -39,6 +40,7 @@
@@ -39,6 +39,7 @@
#include "components/bookmarks/common/android/bookmark_type.h"
#include "components/bookmarks/common/bookmark_pref_names.h"
#include "components/bookmarks/managed/managed_bookmark_service.h"
@ -755,7 +752,7 @@ Completely remove contacts picker permission from the file dialog
#include "components/dom_distiller/core/url_utils.h"
#include "components/prefs/pref_service.h"
#include "components/query_parser/query_parser.h"
@@ -48,6 +50 ,24 @@
@@ -48,6 +49 ,24 @@
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_contents.h"
@ -780,7 +777,7 @@ Completely remove contacts picker permission from the file dialog
using base::android::AttachCurrentThread;
using base::android::ConvertUTF8ToJavaString;
using base::android::ConvertUTF16ToJavaString;
@@ -64,8 +84 ,93 @@ using bookmarks::BookmarkNode;
@@ -64,8 +83 ,93 @@ using bookmarks::BookmarkNode;
using bookmarks::BookmarkType;
using content::BrowserThread;
@ -874,7 +871,7 @@ Completely remove contacts picker permission from the file dialog
const int kInvalidId = -1;
class BookmarkTitleComparer {
@@ -152,6 +257 ,10 @@ BookmarkBridge::~BookmarkBridge() {
@@ -152,6 +256 ,10 @@ BookmarkBridge::~BookmarkBridge() {
if (partner_bookmarks_shim_)
partner_bookmarks_shim_->RemoveObserver(this);
reading_list_manager_->RemoveObserver(this);
@ -885,7 +882,7 @@ Completely remove contacts picker permission from the file dialog
}
void BookmarkBridge::Destroy(JNIEnv*, const JavaParamRef<jobject>&) {
@@ -542 ,6 +651,182 @@ jint BookmarkBridge::GetTotalBookmarkCou
@@ -543 ,6 +651,182 @@ jint BookmarkBridge::GetTotalBookmarkCou
return count;
}
@ -905,7 +902,7 @@ Completely remove contacts picker permission from the file dialog
+ //NOTE: extension and description are not used on Android, thus not set
+ ui::SelectFileDialog::FileTypeInfo file_type_info;
+
+ const std::vector<std::u16string> v_accept_types = { base::UTF8ToUTF16(base::StringPiece("text/html")) };
+ const std::vector<std::u16string> v_accept_types = { u"text/html" };
+
+ // Android needs the original MIME types and an additional capture value.
+ std::pair<std::vector<std::u16string>, bool> accept_types =
@ -1039,7 +1036,7 @@ Completely remove contacts picker permission from the file dialog
+
+ if (!bookmarks.empty()) {
+ // adding bookmarks will begin extensive changes to the model
+ writer->AddBookmarksWithModel(bookmark_model_, bookmarks, base::ASCIIToUTF16(base::StringPiece("Imported")) );
+ writer->AddBookmarksWithModel(bookmark_model_, bookmarks, u"Imported" );
+ }
+ if (!search_engines.empty()) {
+ TemplateURLService::OwnedTemplateURLVector owned_template_urls;
@ -1163,7 +1160,7 @@ Completely remove contacts picker permission from the file dialog
#include "chrome/browser/bookmarks/bookmark_model_factory.h"
#include "chrome/browser/favicon/favicon_service_factory.h"
#include "chrome/browser/profiles/profile.h"
@@ -240,7 +24 1,12 @@ class Writer : public base::RefCountedTh
@@ -230,7 +23 1,12 @@ class Writer : public base::RefCountedTh
// Opens the file, returning true on success.
bool OpenFile() {
int flags = base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE;
@ -1217,7 +1214,7 @@ Completely remove contacts picker permission from the file dialog
return selected;
--- a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java
+++ b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java
@@ -36,16 +36,16 @@ import java.util.ArrayList;
@@ -36,12 +36,12 @@ import java.util.ArrayList;
public class DownloadLocationDialogCoordinator implements ModalDialogProperties.Controller {
@NonNull
private DownloadLocationDialogController mController;
@ -1233,11 +1230,6 @@ Completely remove contacts picker permission from the file dialog
private long mTotalBytes;
private @DownloadLocationDialogType int mDialogType;
private String mSuggestedPath;
- private Context mContext;
+ protected Context mContext;
private boolean mLocationDialogManaged;
/**
@@ -127,7 +127,7 @@ public class DownloadLocationDialogCoord
* Called after retrieved the download directory options.
* @param dirs An list of available download directories.
@ -1249,7 +1241,7 @@ Completely remove contacts picker permission from the file dialog
// name conflict or disk error.
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -5221,6 +5221 ,11 @@ const char kWebrtcPipeWireCapturerDescri
@@ -5495,6 +5495 ,11 @@ const char kWebrtcPipeWireCapturerDescri
"capturing the desktop content on the Wayland display server.";
#endif // #if defined(WEBRTC_USE_PIPEWIRE)
@ -1263,7 +1255,7 @@ Completely remove contacts picker permission from the file dialog
// alphabetical order just like the header file.
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -3073 ,6 +3073 ,9 @@ extern const char kWebrtcPipeWireCapture
@@ -32 07,6 +32 07,9 @@ extern const char kWebrtcPipeWireCapture
extern const char kWebrtcPipeWireCapturerDescription[];
#endif // #if defined(WEBRTC_USE_PIPEWIRE)
@ -1275,7 +1267,7 @@ Completely remove contacts picker permission from the file dialog
// alphabetical order. See top instructions for more.
--- a/chrome/browser/flags/android/chrome_feature_list.cc
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -151,6 +151 ,7 @@ const base::Feature* const kFeaturesExpo
@@ -156,6 +156 ,7 @@ const base::Feature* const kFeaturesExpo
&kBackgroundThreadPool,
&kBentoOffline,
&kBookmarkBottomSheet,
@ -1283,9 +1275,9 @@ Completely remove contacts picker permission from the file dialog
&kCastDeviceFilter,
&kCloseTabSuggestions,
&kCriticalPersistedTabData,
@@ -759,6 +760,10 @@ const base::Feature kVrBrowsingFeedback{
const base::Feature kWebNotesStylize{"WebNotesStylize",
base::FEATURE_DISABLED_BY_DEFAULT};
@@ -774,6 +775,10 @@ const base::Feature kWebOtpCrossDeviceSi
const base::Feature kWebApkInstallCompleteNotification{
"WebApkInstallCompleteNotification", base::FEATURE_DISABLED_BY_DEFAULT};
+// disabled by default because of an issue on Android 6.0
+const base::Feature kBookmarksExportUseSaf{"BookmarksExportUseSaf",
@ -1296,20 +1288,20 @@ Completely remove contacts picker permission from the file dialog
const JavaParamRef<jstring>& jfeature_name) {
--- a/chrome/browser/flags/android/chrome_feature_list.h
+++ b/chrome/browser/flags/android/chrome_feature_list.h
@@ -157,6 +157,7 @@ extern const base::Feature kVoiceSearchA
extern const base::Feature kVoiceButtonInTop Toolbar;
extern const base::Feature kVrBrowsingFeedback ;
extern const base::Feature kPrefetchNotificationSchedulingIntegration ;
@@ -140,6 +140,7 @@ extern const base::Feature kToolbarMicIp
extern const base::Feature kToolbarUseHardwareBitmapDraw ;
extern const base::Feature kTrustedWebActivityLocationDelegation ;
extern const base::Feature kTrustedWebActivityNewDisclosure ;
+extern const base::Feature kBookmarksExportUseSaf;
extern const base::Feature kWebNotesStyliz e;
} // namespace android
extern const base::Feature kTrustedWebActivityPostMessag e;
extern const base::Feature kTrustedWebActivityQualityEnforcement;
extern const base::Feature kTrustedWebActivityQualityEnforcementForced;
--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
@@ -501,6 +501,7 @@ public abstract class ChromeFeatureList
public static final String WEBNOTES_STYLIZE = "WebNotesStylize";
public static final String WIPE_DATA_ON_CHILD_ACCOUNT_SIGNIN = "WipeDataOnChildAccountSignin";
@@ -522,6 +522,7 @@ public abstract class ChromeFeatureList
"WebApkInstallCompleteNotification";
public static final String XSURFACE_METRICS_REPORTING = "XsurfaceMetricsReporting";
public static final String WEB_OTP_CROSS_DEVICE_SIMPLE_STRING = "WebOtpCrossDeviceSimpleString";
+ public static final String BOOKMARKS_EXPORT_USESAF = "BookmarksExportUseSaf";
@NativeMethods
@ -1372,7 +1364,7 @@ Completely remove contacts picker permission from the file dialog
// Adds the TemplateURLs in |template_urls| to the local store.
--- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
+++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
@@ -117 ,6 +117 ,8 @@ public final class ChromePreferenceKeys
@@ -12 1,6 +12 1,8 @@ public final class ChromePreferenceKeys
public static final String BOOKMARKS_LAST_USED_URL = "enhanced_bookmark_last_used_url";
public static final String BOOKMARKS_LAST_USED_PARENT =
"enhanced_bookmark_last_used_parent_folder";
@ -1381,7 +1373,7 @@ Completely remove contacts picker permission from the file dialog
/**
* Whether Chrome is set as the default browser.
@@ -1015,6 +1017 ,7 @@ public final class ChromePreferenceKeys
@@ -1030,6 +1032 ,7 @@ public final class ChromePreferenceKeys
AUTOFILL_ASSISTANT_PROACTIVE_HELP,
APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE,
APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO,
@ -1418,7 +1410,7 @@ Completely remove contacts picker permission from the file dialog
</message>
--- a/chrome/common/BUILD.gn
+++ b/chrome/common/BUILD.gn
@@ -409,6 +409 ,9 @@ static_library("common") {
@@ -413,6 +413 ,9 @@ static_library("common") {
sources += [
"media/chrome_media_drm_bridge_client.cc",
"media/chrome_media_drm_bridge_client.h",
@ -1426,8 +1418,8 @@ Completely remove contacts picker permission from the file dialog
+ "importer/imported_bookmark_entry.cc",
+ "importer/imported_bookmark_entry.h",
]
deps += [ "//components/embedder_support/android/common:url_constants" ]
} else {
# Non-Android.
--- a/chrome/utility/BUILD.gn
+++ b/chrome/utility/BUILD.gn
@@ -78,8 +78,6 @@ static_library("utility") {
@ -1439,7 +1431,7 @@ Completely remove contacts picker permission from the file dialog
"importer/bookmarks_file_importer.cc",
"importer/bookmarks_file_importer.h",
"importer/external_process_importer_bridge.cc",
@@ -186,6 +184 ,11 @@ static_library("utility") {
@@ -181,6 +179 ,11 @@ static_library("utility") {
}
}