@ -13,17 +13,17 @@ Completely remove contacts picker permission from the file dialog
chrome/android/java/res/menu/bookmark_action_bar_menu.xml | 14
chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java | 12
chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java | 28
chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java | 278 +++++++++
chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java | 277 +++++++++
chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkDelegate.java | 10
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/about_flags.cc | 6
chrome/browser/android/bookmarks/bookmark_bridge.cc | 284 ++++++++++
chrome/browser/android/bookmarks/bookmark_bridge.cc | 285 ++++++++++
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 | 7
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/flag_descriptions.cc | 5
chrome/browser/flag_descriptions.h | 3
@ -38,13 +38,12 @@ Completely remove contacts picker permission from the file dialog
chrome/utility/BUILD.gn | 7
chrome/utility/importer/bookmark_html_reader.cc | 27
chrome/utility/importer/bookmark_html_reader.h | 8
content/browser/BUILD.gn | 1
ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java | 18
ui/android/java/strings/android_ui_strings.grd | 3
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
38 files changed, 878 insertions(+), 23 deletions(-)
37 files changed, 877 insertions(+), 24 deletions(-)
--- a/base/android/content_uri_utils.cc
+++ b/base/android/content_uri_utils.cc
@ -128,10 +127,10 @@ Completely remove contacts picker permission from the file dialog
*
--- a/chrome/android/java/AndroidManifest.xml
+++ b/chrome/android/java/AndroidManifest.xml
@@ -38,7 +38,6 @@ by a child template that "extends" this
{% endif %}
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH"/>
@@ -56,7 +56,6 @@ by a child template that "extends" this
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_ADMIN"/>
{% endif %}
- <uses-permission-sdk-23 android:name="android.permission.READ_CONTACTS"/>
<uses-permission-sdk-23 android:name="android.permission.REORDER_TASKS"/>
<uses-permission-sdk-23 android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
@ -323,7 +322,7 @@ Completely remove contacts picker permission from the file dialog
/**
* Provides the communication channel for Android to fetch and manipulate the
@@ -587,6 +625,21 0 @@ public class BookmarkBridge {
@@ -587,6 +625,209 @@ public class BookmarkBridge {
}
/**
@ -477,8 +476,7 @@ 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, new File(standardBoorkmarkName),
+ /*totalBytes*/ 0, context.getString(R.string.export_bookmarks_alert_title));
+ DownloadLocationDialogType.DEFAULT, /*totalBytes*/ 0);
+ mCustomView.mDontShowAgain.setVisibility(View.GONE);
+
+ Resources resources = mContext.getResources();
@ -534,7 +532,7 @@ Completely remove contacts picker permission from the file dialog
* Synchronously gets a list of bookmarks that match the specified search query.
* @param query Keyword used for searching bookmarks.
* @param maxNumberOfResult Maximum number of result to fetch.
@@ -1022,6 +1264 ,39 @@ public class BookmarkBridge {
@@ -1022,6 +1263 ,39 @@ public class BookmarkBridge {
depthList.add(depth);
}
@ -574,7 +572,7 @@ Completely remove contacts picker permission from the file dialog
private static List<Pair<Integer, Integer>> createPairsList(int[] left, int[] right) {
List<Pair<Integer, Integer>> pairList = new ArrayList<Pair<Integer, Integer>>();
for (int i = 0; i < left.length; i++) {
@@ -1089,6 +1364 ,9 @@ public class BookmarkBridge {
@@ -1089,6 +1363 ,9 @@ public class BookmarkBridge {
int getChildCount(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type);
void getChildIDs(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type,
List<BookmarkId> bookmarksList);
@ -686,7 +684,7 @@ 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
@@ -100,7 +100 ,7 @@ public class NativePageFactory {
@@ -101,7 +101 ,7 @@ public class NativePageFactory {
protected NativePage buildBookmarksPage(Tab tab) {
return new BookmarkPage(mActivity.getComponentName(), mActivity.getSnackbarManager(),
mActivity.getTabModelSelector().isIncognitoSelected(),
@ -697,8 +695,8 @@ Completely remove contacts picker permission from the file dialog
protected NativePage buildDownloadsPage(Tab tab) {
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -1838,6 +1838 ,8 @@ static_library("browser") {
"webapps/chrome_webapps_client .h",
@@ -1856,6 +1856 ,8 @@ static_library("browser") {
"webid/federated_identity_sharing_permission_context_factory .h",
"window_placement/window_placement_permission_context.cc",
"window_placement/window_placement_permission_context.h",
+ "importer/profile_writer.cc",
@ -706,7 +704,7 @@ Completely remove contacts picker permission from the file dialog
]
configs += [
@@ -2934,6 +2936 ,8 @@ static_library("browser") {
@@ -2962,6 +2964 ,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",
@ -715,7 +713,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",
@@ -3443,8 +3447 ,6 @@ static_library("browser") {
@@ -3485,8 +3489 ,6 @@ static_library("browser") {
"badging/badge_manager_factory.h",
"banners/app_banner_manager_desktop.cc",
"banners/app_banner_manager_desktop.h",
@ -726,9 +724,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
@@ -7299,6 +729 9,12 @@ const FeatureEntry kFeatureEntries[] = {
FEATURE_VALUE_TYPE(features::kDesktopPWAsAppIconShortcutsMenuUI)} ,
#endif
@@ -7379,6 +737 9,12 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kPlaybackSpeedButtonDescription, kOsAll ,
FEATURE_VALUE_TYPE(media::kPlaybackSpeedButton)},
+ {"export-bookmarks-use-saf",
+ flag_descriptions::kBookmarksExportUseSafName,
@ -741,7 +739,15 @@ 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
@@ -38,6 +38,7 @@
@@ -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 @@
#include "components/bookmarks/common/android/bookmark_type.h"
#include "components/bookmarks/common/bookmark_pref_names.h"
#include "components/bookmarks/managed/managed_bookmark_service.h"
@ -749,7 +755,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"
@@ -47,6 +48 ,24 @@
@@ -48,6 +50 ,24 @@
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_contents.h"
@ -774,7 +780,7 @@ Completely remove contacts picker permission from the file dialog
using base::android::AttachCurrentThread;
using base::android::ConvertUTF8ToJavaString;
using base::android::ConvertUTF16ToJavaString;
@@ -63,8 +82 ,93 @@ using bookmarks::BookmarkNode;
@@ -64,8 +84 ,93 @@ using bookmarks::BookmarkNode;
using bookmarks::BookmarkType;
using content::BrowserThread;
@ -868,7 +874,7 @@ Completely remove contacts picker permission from the file dialog
const int kInvalidId = -1;
class BookmarkTitleComparer {
@@ -149,6 +253 ,10 @@ BookmarkBridge::~BookmarkBridge() {
@@ -152,6 +257 ,10 @@ BookmarkBridge::~BookmarkBridge() {
if (partner_bookmarks_shim_)
partner_bookmarks_shim_->RemoveObserver(this);
reading_list_manager_->RemoveObserver(this);
@ -879,7 +885,7 @@ Completely remove contacts picker permission from the file dialog
}
void BookmarkBridge::Destroy(JNIEnv*, const JavaParamRef<jobject>&) {
@@ -539,6 +647 ,182 @@ jint BookmarkBridge::GetTotalBookmarkCou
@@ -542,6 +651 ,182 @@ jint BookmarkBridge::GetTotalBookmarkCou
return count;
}
@ -899,7 +905,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("text/html") };
+ const std::vector<std::u16string> v_accept_types = { base::UTF8ToUTF16(base::StringPiece( "text/html") ) };
+
+ // Android needs the original MIME types and an additional capture value.
+ std::pair<std::vector<std::u16string>, bool> accept_types =
@ -1022,7 +1028,7 @@ Completely remove contacts picker permission from the file dialog
+ favicon_base::FaviconUsageDataList favicons;
+
+ bookmark_html_reader::ImportBookmarksFile(
+ base::Callback<bool(void)>(),
+ base::Repeating Callback<bool(void)>(),
+ base::BindRepeating(internal::CanImportURL),
+ contents,
+ &bookmarks,
@ -1033,7 +1039,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("Imported"));
+ writer->AddBookmarksWithModel(bookmark_model_, bookmarks, base::ASCIIToUTF16(base::StringPiece( "Imported") ));
+ }
+ if (!search_engines.empty()) {
+ TemplateURLService::OwnedTemplateURLVector owned_template_urls;
@ -1065,7 +1071,7 @@ Completely remove contacts picker permission from the file dialog
--- a/chrome/browser/android/bookmarks/bookmark_bridge.h
+++ b/chrome/browser/android/bookmarks/bookmark_bridge.h
@@ -17,6 +17,7 @@
#include "base/scoped_observer .h"
#include "base/scoped_observation .h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/android/bookmarks/partner_bookmarks_shim.h"
+#include "chrome/browser/bookmarks/bookmark_html_writer.h"
@ -1139,7 +1145,7 @@ Completely remove contacts picker permission from the file dialog
// This is owned by profile.
@@ -332,6 +355,9 @@ class BookmarkBridge : public bookmarks:
// Observes the profile destruction and creation.
ScopedObserver<Profile, ProfileObserver> profile_observer _{this};
base::ScopedObservation<Profile, ProfileObserver> profile_observation _{this};
+ const std::string FileSelectedImpl(const base::FilePath& path);
+ void FileSelectedImplOnUIThread(const base::FilePath& path,
@ -1173,7 +1179,7 @@ Completely remove contacts picker permission from the file dialog
return false;
--- a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java
+++ b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java
@@ -49,7 +49 ,7 @@ public class DownloadLocationCustomView
@@ -46,7 +46 ,7 @@ public class DownloadLocationCustomView
private TextView mFileSize;
private Spinner mFileLocation;
private TextView mLocationAvailableSpace;
@ -1182,15 +1188,16 @@ Completely remove contacts picker permission from the file dialog
private @DownloadLocationDialogType int mDialogType;
private long mTotalBytes;
@@ -71,6 +71 ,7 @@ public class DownloadLocationCustomView
@@ -68,7 +68 ,7 @@ public class DownloadLocationCustomView
mDontShowAgain = findViewById(R.id.show_again_checkbox);
}
+ public
void initialize(@DownloadLocationDialogType int dialogType, File suggestedPath, long totalBytes,
CharSequence title) {
- void initialize(@DownloadLocationDialogType int dialogType, long totalBytes) {
+ public void initialize(@DownloadLocationDialogType int dialogType, long totalBytes) {
// TODO(xingliu): Remove this function, currently used by smart suggestion.
mDialogType = dialogType;
@@ -135,7 +136,7 @@ public class DownloadLocationCustomView
mTotalBytes = totalBytes;
@@ -117,7 +117,7 @@ public class DownloadLocationCustomView
* @return The text that the user inputted as the name of the file.
*/
@Nullable
@ -1199,7 +1206,7 @@ Completely remove contacts picker permission from the file dialog
if (mFileName == null || mFileName.getText() == null) return null;
return mFileName.getText().toString();
}
@@ -144,7 +145 ,7 @@ public class DownloadLocationCustomView
@@ -126,7 +126 ,7 @@ public class DownloadLocationCustomView
* @return The file path based on what the user selected as the location of the file.
*/
@Nullable
@ -1210,14 +1217,17 @@ 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
@@ -34,13 +34,13 @@ import java.util.ArrayList;
@@ -36,16 +36,16 @@ import java.util.ArrayList;
public class DownloadLocationDialogCoordinator implements ModalDialogProperties.Controller {
@NonNull
private DownloadLocationDialogController mController;
- private PropertyModel mDialogModel;
+ protected PropertyModel mDialogModel;
private PropertyModel mDownloadLocationDialogModel;
private PropertyModelChangeProcessor<PropertyModel, DownloadLocationCustomView, PropertyKey>
mPropertyModelChangeProcessor;
- private DownloadLocationCustomView mCustomView;
- private ModalDialogManager mModalDialogManager;
+ protected PropertyModel mDialogModel;
+ protected DownloadLocationCustomView mCustomView;
+ protected ModalDialogManager mModalDialogManager;
private long mTotalBytes;
@ -1225,10 +1235,10 @@ Completely remove contacts picker permission from the file dialog
private String mSuggestedPath;
- private Context mContext;
+ protected Context mContext;
private boolean mLocationDialogManaged;
/**
* Initializes the download location dialog.
@@ -119,7 +119,7 @@ public class DownloadLocationDialogCoord
@@ -127,7 +127,7 @@ public class DownloadLocationDialogCoord
* Called after retrieved the download directory options.
* @param dirs An list of available download directories.
*/
@ -1239,7 +1249,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
@@ -5229,6 +5229 ,11 @@ const char kWebrtcPipeWireCapturerDescri
@@ -5221,6 +5221 ,11 @@ const char kWebrtcPipeWireCapturerDescri
"capturing the desktop content on the Wayland display server.";
#endif // #if defined(WEBRTC_USE_PIPEWIRE)
@ -1253,7 +1263,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
@@ -3069,6 +3069 ,9 @@ extern const char kWebrtcPipeWireCapture
@@ -3073,6 +3073 ,9 @@ extern const char kWebrtcPipeWireCapture
extern const char kWebrtcPipeWireCapturerDescription[];
#endif // #if defined(WEBRTC_USE_PIPEWIRE)
@ -1265,7 +1275,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
@@ -142,6 +142,7 @@ const base::Feature* kFeaturesExposedToJ
@@ -151,6 +151,7 @@ const base::Feature* const kFeaturesExpo
&kBackgroundThreadPool,
&kBentoOffline,
&kBookmarkBottomSheet,
@ -1273,9 +1283,9 @@ Completely remove contacts picker permission from the file dialog
&kCastDeviceFilter,
&kCloseTabSuggestions,
&kCriticalPersistedTabData,
@@ -746,6 +747,10 @@ const base::Feature kVoiceButtonInTopToo
const base::Feature kVrBrowsingFeedback{"VrBrowsingFeedback ",
base::FEATURE_EN ABLED_BY_DEFAULT};
@@ -759,6 +760,10 @@ const base::Feature kVrBrowsingFeedback{
const base::Feature kWebNotesStylize{"WebNotesStylize ",
base::FEATURE_DIS ABLED_BY_DEFAULT};
+// disabled by default because of an issue on Android 6.0
+const base::Feature kBookmarksExportUseSaf{"BookmarksExportUseSaf",
@ -1291,14 +1301,14 @@ Completely remove contacts picker permission from the file dialog
extern const base::Feature kVrBrowsingFeedback;
extern const base::Feature kPrefetchNotificationSchedulingIntegration;
+extern const base::Feature kBookmarksExportUseSaf;
extern const base::Feature kWebNotesStylize;
} // namespace android
} // namespace chrome
--- 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
@@ -489,6 +489 ,7 @@ public abstract class ChromeFeatureList
public static final String WEB_AUTH_PHONE_SUPPORT = "WebAuthenticationPhoneSupport ";
public static final String WEB_FEED = "WebFeed ";
@@ -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 ";
public static final String XSURFACE_METRICS_REPORTING = "XsurfaceMetricsReporting";
+ public static final String BOOKMARKS_EXPORT_USESAF = "BookmarksExportUseSaf";
@ -1340,15 +1350,15 @@ Completely remove contacts picker permission from the file dialog
// If the bookmark bar is currently empty, we should import directly to it.
--- a/chrome/browser/importer/profile_writer.h
+++ b/chrome/browser/importer/profile_writer.h
@@ -12,6 +12,7 @@
@@ -11,6 +11,7 @@
#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "base/time/time.h"
#include "build/build_config.h"
+#include "components/bookmarks/browser/bookmark_model.h"
#include "components/favicon_base/favicon_usage_data.h"
#include "components/history/core/browser/history_types.h"
#include "components/search_engines/template_url_service.h"
@@ -69,6 +70 ,11 @@ class ProfileWriter : public base::RefCo
@@ -68,6 +69 ,11 @@ class ProfileWriter : public base::RefCo
virtual void AddBookmarks(const std::vector<ImportedBookmarkEntry>& bookmarks,
const std::u16string& top_level_folder_name);
@ -1362,7 +1372,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
@@ -109,6 +109 ,8 @@ public final class ChromePreferenceKeys
@@ -117,6 +117 ,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";
@ -1371,7 +1381,7 @@ Completely remove contacts picker permission from the file dialog
/**
* Whether Chrome is set as the default browser.
@@ -979,6 +981 ,7 @@ public final class ChromePreferenceKeys
@@ -1015,6 +1017 ,7 @@ public final class ChromePreferenceKeys
AUTOFILL_ASSISTANT_PROACTIVE_HELP,
APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE,
APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO,
@ -1381,8 +1391,8 @@ Completely remove contacts picker permission from the file dialog
CHROME_SURVEY_PROMPT_DISPLAYED_TIMESTAMP.pattern(),
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -242,6 +242,24 @@ CHAR- LIMIT guidelines:
<message name="IDS_NOTIFICATION_CATEGORY_SITES" desc="Label for notifications from websites, within a list of notification categories. [CHAR- LIMIT=32]">
@@ -242,6 +242,24 @@ CHAR_ LIMIT guidelines:
<message name="IDS_NOTIFICATION_CATEGORY_SITES" desc="Label for notifications from websites, within a list of notification categories. [CHAR_ LIMIT=32]">
Sites
</message>
+ <message name="IDS_IMPORT_BOOKMARKS" desc="The label for the import bookmarks button.">
@ -1403,12 +1413,12 @@ Completely remove contacts picker permission from the file dialog
+ <message name="IDS_EXPORT_BOOKMARKS_ALERT_MESSAGE_NO" desc="Label for no button.">
+ Choose another file
+ </message>
<message name="IDS_NOTIFICATION_CATEGORY_VR" desc="Label for notifications in VR, within a list of notification categories. [CHAR- LIMIT=32]">
<message name="IDS_NOTIFICATION_CATEGORY_VR" desc="Label for notifications in VR, within a list of notification categories. [CHAR_ LIMIT=32]">
Virtual Reality
</message>
--- a/chrome/common/BUILD.gn
+++ b/chrome/common/BUILD.gn
@@ -405,6 +405 ,9 @@ static_library("common") {
@@ -409,6 +409 ,9 @@ static_library("common") {
sources += [
"media/chrome_media_drm_bridge_client.cc",
"media/chrome_media_drm_bridge_client.h",
@ -1429,7 +1439,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",
@@ -179,6 +177 ,11 @@ static_library("utility") {
@@ -186,6 +184 ,11 @@ static_library("utility") {
}
}
@ -1604,7 +1614,7 @@ Completely remove contacts picker permission from the file dialog
return mimeTypes;
}
@@ -792,6 +80 0,10 @@ public class SelectFileDialog implements
@@ -812,6 +82 0,10 @@ public class SelectFileDialog implements
return countAcceptTypesFor(superType) == mFileTypes.size();
}
@ -1618,7 +1628,7 @@ Completely remove contacts picker permission from the file dialog
--- a/ui/android/java/strings/android_ui_strings.grd
+++ b/ui/android/java/strings/android_ui_strings.grd
@@ -174,6 +174,9 @@
<message name="IDS_OPENING_FILE_ERROR" desc="Toast when the browser is unable to open a file for upload. [CHAR- LIMIT=32]">
<message name="IDS_OPENING_FILE_ERROR" desc="Toast when the browser is unable to open a file for upload. [CHAR_ LIMIT=32]">
Failed to open selected file
</message>
+ <message name="IDS_SAVING_FILE_ERROR" desc="Toast when the browser is unable to save a file. [CHAR-LIMIT=32]">
@ -1626,10 +1636,10 @@ Completely remove contacts picker permission from the file dialog
+ </message>
<!-- Clipboard -->
<message name="IDS_COPY_TO_CLIPBOARD_FAILURE_MESSAGE" desc="Notification for when copying to the clipboard fails. [CHAR- LIMIT=64]">
<message name="IDS_COPY_TO_CLIPBOARD_FAILURE_MESSAGE" desc="Notification for when copying to the clipboard fails. [CHAR_ LIMIT=64]">
--- a/ui/shell_dialogs/select_file_dialog.h
+++ b/ui/shell_dialogs/select_file_dialog.h
@@ -203,6 +203 ,8 @@ class SHELL_DIALOGS_EXPORT SelectFileDia
@@ -202,6 +202 ,8 @@ class SHELL_DIALOGS_EXPORT SelectFileDia
void* params);
bool HasMultipleFileTypeChoices();
@ -1664,13 +1674,3 @@ Completely remove contacts picker permission from the file dialog
protected:
~SelectFileDialogImpl() override;
--- a/content/browser/BUILD.gn
+++ b/content/browser/BUILD.gn
@@ -78,6 +78,7 @@ source_set("browser") {
"//components/payments/mojom",
"//components/power_scheduler",
"//components/services/filesystem:lib",
+ "//components/services/quarantine:quarantine",
"//components/services/storage",
"//components/services/storage:filesystem_proxy_factory",
"//components/services/storage/dom_storage:local_storage_proto",