@ -16,13 +16,13 @@ Completely remove contacts picker permission from the file dialog
chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java | 278 +++++++++
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 | 9
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.h | 28
chrome/browser/bookmarks/bookmark_html_writer.cc | 6
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/DownloadLocationDialogCoordinator.java | 10
chrome/browser/flag_descriptions.cc | 5
@ -38,12 +38,13 @@ 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
37 files changed, 877 insertions(+), 22 deletions(-)
38 files changed, 878 insertions(+), 23 deletions(-)
--- a/base/android/content_uri_utils.cc
+++ b/base/android/content_uri_utils.cc
@ -127,7 +128,7 @@ Completely remove contacts picker permission from the file dialog
*
--- a/chrome/android/java/AndroidManifest.xml
+++ b/chrome/android/java/AndroidManifest.xml
@@ -39,7 +39 ,6 @@ by a child template that "extends" this
@@ -38,7 +38 ,6 @@ by a child template that "extends" this
{% endif %}
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH"/>
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_ADMIN"/>
@ -221,7 +222,7 @@ Completely remove contacts picker permission from the file dialog
static final int EDIT_BOOKMARK_REQUEST_CODE = 14;
public static final String INTENT_VISIT_BOOKMARK_ID = "BookmarkEditActivity.VisitBookmarkId";
@@ -38,6 +43 ,20 @@ public class BookmarkActivity extends Sn
@@ -40,6 +45 ,20 @@ public class BookmarkActivity extends Sn
if (TextUtils.isEmpty(url)) url = UrlConstants.BOOKMARKS_URL;
mBookmarkManager.updateForUrl(url);
setContentView(mBookmarkManager.getView());
@ -242,7 +243,7 @@ Completely remove contacts picker permission from the file dialog
}
@Override
@@ -54,6 +73 ,7 @@ public class BookmarkActivity extends Sn
@@ -56,6 +75 ,7 @@ public class BookmarkActivity extends Sn
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
@ -250,7 +251,7 @@ Completely remove contacts picker permission from the file dialog
if (requestCode == EDIT_BOOKMARK_REQUEST_CODE && resultCode == RESULT_OK) {
BookmarkId bookmarkId = BookmarkId.getBookmarkIdFromString(data.getStringExtra(
INTENT_VISIT_BOOKMARK_ID));
@@ -61,6 +81 ,14 @@ public class BookmarkActivity extends Sn
@@ -63,6 +83 ,14 @@ public class BookmarkActivity extends Sn
}
}
@ -622,7 +623,7 @@ Completely remove contacts picker permission from the file dialog
private BookmarkUndoController mUndoController;
private final ObserverList<BookmarkUIObserver> mUIObservers = new ObserverList<>();
private BasicNativePage mNativePage;
@@ -329,6 +333 ,14 @@ public class BookmarkManager
@@ -332,6 +336 ,14 @@ public class BookmarkManager
}
/**
@ -637,7 +638,7 @@ Completely remove contacts picker permission from the file dialog
* @return Current URL representing the UI state of bookmark manager. If no state has been shown
* yet in this session, on phone return last used state stored in preference; on tablet
* return the url previously set by {@link #updateForUrl(String)}.
@@ -507,6 +519 ,16 @@ public class BookmarkManager
@@ -510,6 +522 ,16 @@ public class BookmarkManager
}
@Override
@ -666,16 +667,16 @@ Completely remove contacts picker permission from the file dialog
/**
* A native page holding a {@link BookmarkManager} on _tablet_.
@@ -29,11 +32,15 @@ public class BookmarkPage extends BasicN
@@ -29,12 +32,15 @@ public class BookmarkPage extends BasicN
* @param host A NativePageHost to load urls.
*/
public BookmarkPage(
- ComponentName componentName, SnackbarManager snackbarManager, NativePageHost host) {
+ ComponentName componentName, SnackbarManager snackbarManager, NativePageHost host,
+ ChromeActivity activity) {
public BookmarkPage(ComponentName componentName, SnackbarManager snackbarManager,
- boolean isIncognito, NativePageHost host) {
+ boolean isIncognito, NativePageHost host, ChromeActivity activity) {
super(host);
mManager = new BookmarkManager(host.getContext(), componentName, false, snackbarManager);
mManager = new BookmarkManager(
host.getContext(), componentName, false, isIncognito, snackbarManager);
mManager.setBasicNativePage(this);
+ mManager.setWindow(activity.getWindowAndroid(),
+ new ModalDialogManager(
@ -685,10 +686,10 @@ 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
@@ -96,7 +96,7 @@ public class NativePageFactory {
@@ -100,7 +100,7 @@ public class NativePageFactory {
protected NativePage buildBookmarksPage(Tab tab) {
return new BookmarkPage(mActivity.getComponentName(), mActivity.getSnackbarManager(),
mActivity.getTabModelSelector().isIncognitoSelected(),
- new TabShim(tab, mActivity));
+ new TabShim(tab, mActivity), mActivity);
}
@ -696,7 +697,7 @@ Completely remove contacts picker permission from the file dialog
protected NativePage buildDownloadsPage(Tab tab) {
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -1891,6 +1891 ,8 @@ static_library("browser") {
@@ -1838,6 +1838 ,8 @@ static_library("browser") {
"webapps/chrome_webapps_client.h",
"window_placement/window_placement_permission_context.cc",
"window_placement/window_placement_permission_context.h",
@ -705,7 +706,7 @@ Completely remove contacts picker permission from the file dialog
]
configs += [
@@ -2978,6 +2980 ,8 @@ static_library("browser") {
@@ -2934,6 +2936 ,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",
@ -714,7 +715,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",
@@ -3472,8 +3476 ,6 @@ static_library("browser") {
@@ -3443,8 +3447 ,6 @@ static_library("browser") {
"badging/badge_manager_factory.h",
"banners/app_banner_manager_desktop.cc",
"banners/app_banner_manager_desktop.h",
@ -725,9 +726,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
@@ -7297,6 +7297 ,12 @@ const FeatureEntry kFeatureEntries[] = {
FEATURE_VALUE_TYPE(
optimization_guide::features::kOptimizationGuideModelDownloading)},
@@ -7299,6 +7299 ,12 @@ const FeatureEntry kFeatureEntries[] = {
FEATURE_VALUE_TYPE(features::kDesktopPWAsAppIconShortcutsMenuUI)},
#endif
+ {"export-bookmarks-use-saf",
+ flag_descriptions::kBookmarksExportUseSafName,
@ -740,7 +741,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
@@ -39,6 +39 ,7 @@
@@ -38,6 +38 ,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"
@ -748,7 +749,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 +49 ,24 @@
@@ -47,6 +48 ,24 @@
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_contents.h"
@ -773,7 +774,7 @@ Completely remove contacts picker permission from the file dialog
using base::android::AttachCurrentThread;
using base::android::ConvertUTF8ToJavaString;
using base::android::ConvertUTF16ToJavaString;
@@ -64,8 +83 ,93 @@ using bookmarks::BookmarkNode;
@@ -63,8 +82 ,93 @@ using bookmarks::BookmarkNode;
using bookmarks::BookmarkType;
using content::BrowserThread;
@ -867,7 +868,7 @@ Completely remove contacts picker permission from the file dialog
const int kInvalidId = -1;
class BookmarkTitleComparer {
@@ -150,6 +254 ,10 @@ BookmarkBridge::~BookmarkBridge() {
@@ -149,6 +253 ,10 @@ BookmarkBridge::~BookmarkBridge() {
if (partner_bookmarks_shim_)
partner_bookmarks_shim_->RemoveObserver(this);
reading_list_manager_->RemoveObserver(this);
@ -878,7 +879,7 @@ Completely remove contacts picker permission from the file dialog
}
void BookmarkBridge::Destroy(JNIEnv*, const JavaParamRef<jobject>&) {
@@ -540,6 +648 ,182 @@ jint BookmarkBridge::GetTotalBookmarkCou
@@ -539,6 +647 ,182 @@ jint BookmarkBridge::GetTotalBookmarkCou
return count;
}
@ -898,15 +899,15 @@ 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<base::string16 > v_accept_types = { base::UTF8ToUTF16("text/html") };
+ const std::vector<std::u16string > v_accept_types = { base::UTF8ToUTF16("text/html") };
+
+ // Android needs the original MIME types and an additional capture value.
+ std::pair<std::vector<base::string16 >, bool> accept_types =
+ std::pair<std::vector<std::u16string >, bool> accept_types =
+ std::make_pair(v_accept_types, /* use_media_capture */ false);
+
+ select_file_dialog_->SelectFile(
+ ui::SelectFileDialog::SELECT_OPEN_FILE,
+ base::string16 (),
+ std::u16string (),
+ export_path_,
+ &file_type_info,
+ 0,
@ -927,7 +928,7 @@ Completely remove contacts picker permission from the file dialog
+ ui::WindowAndroid::FromJavaWindowAndroid(java_window);
+ CHECK(window);
+
+ base::string16 export_path =
+ std::u16string export_path =
+ base::android::ConvertJavaStringToUTF16(env, j_export_path);
+
+ export_path_ = base::FilePath::FromUTF16Unsafe(export_path);
@ -946,9 +947,9 @@ Completely remove contacts picker permission from the file dialog
+
+// Attempts to create a TemplateURL from the provided data. |title| is optional.
+// If TemplateURL creation fails, returns null.
+std::unique_ptr<TemplateURL> CreateTemplateURL(const base::string16 & url,
+ const base::string16 & keyword,
+ const base::string16 & title) {
+std::unique_ptr<TemplateURL> CreateTemplateURL(const std::u16string & url,
+ const std::u16string & keyword,
+ const std::u16string & title) {
+ if (url.empty() || keyword.empty())
+ return nullptr;
+ TemplateURLData data;
@ -1064,7 +1065,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/strings/string16 .h"
#include "base/scoped_observer .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"
@ -1156,15 +1157,17 @@ 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"
@@ -241,6 +242,11 @@ class Writer : public base::RefCountedTh
@@ -240,7 +241,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;
file_.reset(new base::File(path_, flags));
- file_ = std::make_unique<base::File>(path_, flags);
+ if (path_.IsContentUri()) {
+ file_ = std::make_unique<base::File>(base::OpenContentUriForWrite(path_));
+ } else {
+ file_.reset(new base::File(path_, flags) );
+ file_ = std::make_unique<base::File>(path_, flags );
+ }
+
if (!file_->IsValid()) {
PLOG(ERROR) << "Could not create " << path_;
return false;
@ -1236,7 +1239,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
@@ -518 2,6 +518 2,11 @@ const char kWebrtcPipeWireCapturerDescri
@@ -5229 ,6 +5229 ,11 @@ const char kWebrtcPipeWireCapturerDescri
"capturing the desktop content on the Wayland display server.";
#endif // #if defined(WEBRTC_USE_PIPEWIRE)
@ -1250,7 +1253,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
@@ -3054,6 +3054 ,9 @@ extern const char kWebrtcPipeWireCapture
@@ -3069,6 +3069 ,9 @@ extern const char kWebrtcPipeWireCapture
extern const char kWebrtcPipeWireCapturerDescription[];
#endif // #if defined(WEBRTC_USE_PIPEWIRE)
@ -1262,8 +1265,8 @@ 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
@@ -141,6 +141 ,7 @@ const base::Feature* kFeaturesExposedToJ
&kAppLaunchpad ,
@@ -142,6 +142 ,7 @@ const base::Feature* kFeaturesExposedToJ
&kBackgroundThreadPool ,
&kBentoOffline,
&kBookmarkBottomSheet,
+ &kBookmarksExportUseSaf,
@ -1283,7 +1286,7 @@ 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
@@ -155,6 +155 ,7 @@ extern const base::Feature kVoiceSearchA
@@ -157,6 +157 ,7 @@ extern const base::Feature kVoiceSearchA
extern const base::Feature kVoiceButtonInTopToolbar;
extern const base::Feature kVrBrowsingFeedback;
extern const base::Feature kPrefetchNotificationSchedulingIntegration;
@ -1293,7 +1296,7 @@ Completely remove contacts picker permission from the file dialog
} // 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
@@ -493 ,6 +493 ,7 @@ public abstract class ChromeFeatureList
@@ -48 9,6 +48 9,7 @@ public abstract class ChromeFeatureList
public static final String WEB_AUTH_PHONE_SUPPORT = "WebAuthenticationPhoneSupport";
public static final String WEB_FEED = "WebFeed";
public static final String XSURFACE_METRICS_REPORTING = "XsurfaceMetricsReporting";
@ -1328,7 +1331,7 @@ Completely remove contacts picker permission from the file dialog
+void ProfileWriter::AddBookmarksWithModel(
+ BookmarkModel* model,
+ const std::vector<ImportedBookmarkEntry>& bookmarks,
+ const base::string16 & top_level_folder_name) {
+ const std::u16string & top_level_folder_name) {
+ if (bookmarks.empty())
+ return;
+
@ -1338,28 +1341,28 @@ Completely remove contacts picker permission from the file dialog
--- a/chrome/browser/importer/profile_writer.h
+++ b/chrome/browser/importer/profile_writer.h
@@ -12,6 +12,7 @@
#include "base/strings/string16 .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"
@@ -70,6 +71 ,11 @@ class ProfileWriter : public base::RefCo
const std::vector<ImportedBookmarkEntry>& bookmarks,
const base::string16 & top_level_folder_name);
@@ -69,6 +70 ,11 @@ class ProfileWriter : public base::RefCo
virtual void AddBookmarks( const std::vector<ImportedBookmarkEntry>& bookmarks,
const std::u16string & top_level_folder_name);
+ virtual void AddBookmarksWithModel(
+ bookmarks::BookmarkModel* model,
+ const std::vector<ImportedBookmarkEntry>& bookmarks,
+ const base::string16 & top_level_folder_name);
+ const std::u16string & top_level_folder_name);
+
virtual void AddFavicons(const favicon_base::FaviconUsageDataList& favicons);
// 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
@@ -91 ,6 +91 ,8 @@ public final class ChromePreferenceKeys
@@ -10 9,6 +10 9,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";
@ -1368,14 +1371,14 @@ Completely remove contacts picker permission from the file dialog
/**
* Whether Chrome is set as the default browser.
@@ -899,6 +901,7 @@ public final class ChromePreferenceKeys
AUTOFILL_ASSISTANT_NUMBER_OF_LITE_SCRIPTS_CANCELED,
@@ -976,6 +978,7 @@ public final class ChromePreferenceKeys
AUTOFILL_ASSISTANT_PROACTIVE_HELP,
APPLICATION_OVERRIDE_LANGUAGE,
APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE,
APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO,
+ BOOKMARKS_LAST_EXPORT_URI,
APPLICATION_OVERRIDE_LANGUAGE,
CHROME_SURVEY_PROMPT_DISPLAYED_TIMESTAMP.pattern(),
CLIPBOARD_SHARED_URI,
CONDITIONAL_TAB_STRIP_CONTINUOUS_DISMISS_COUNTER,
CONDITIONAL_TAB_STRIP_FEATURE_STATUS,
--- 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:
@ -1405,7 +1408,7 @@ Completely remove contacts picker permission from the file dialog
</message>
--- a/chrome/common/BUILD.gn
+++ b/chrome/common/BUILD.gn
@@ -403,6 +403 ,9 @@ static_library("common") {
@@ -405,6 +405 ,9 @@ static_library("common") {
sources += [
"media/chrome_media_drm_bridge_client.cc",
"media/chrome_media_drm_bridge_client.h",
@ -1417,7 +1420,7 @@ Completely remove contacts picker permission from the file dialog
} else {
--- a/chrome/utility/BUILD.gn
+++ b/chrome/utility/BUILD.gn
@@ -79,8 +79 ,6 @@ static_library("utility") {
@@ -78,8 +78 ,6 @@ static_library("utility") {
if (!is_android) {
sources += [
@ -1426,7 +1429,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",
@@ -180,6 +178 ,11 @@ static_library("utility") {
@@ -179,6 +177 ,11 @@ static_library("utility") {
}
}
@ -1499,7 +1502,7 @@ Completely remove contacts picker permission from the file dialog
content, "\n", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
@@ -126,6 +144,7 @@ void ImportBookmarksFile(
std::vector<base::string16 > path;
std::vector<std::u16string > path;
size_t toolbar_folder_index = 0;
std::string charset = "UTF-8"; // If no charset is specified, assume utf-8.
+
@ -1521,7 +1524,7 @@ Completely remove contacts picker permission from the file dialog
}
--- a/chrome/utility/importer/bookmark_html_reader.h
+++ b/chrome/utility/importer/bookmark_html_reader.h
@@ -51,6 +51 ,14 @@ void ImportBookmarksFile(
@@ -50,6 +50 ,14 @@ void ImportBookmarksFile(
std::vector<importer::SearchEngineInfo>* search_engines,
favicon_base::FaviconUsageDataList* favicons);
@ -1538,7 +1541,7 @@ Completely remove contacts picker permission from the file dialog
// than true bookmarks.
--- a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
+++ b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
@@ -35,6 +35 ,7 @@ import org.chromium.base.task.AsyncTask;
@@ -38,6 +38 ,7 @@ import org.chromium.base.task.AsyncTask;
import org.chromium.base.task.PostTask;
import org.chromium.base.task.TaskTraits;
import org.chromium.ui.R;
@ -1546,7 +1549,7 @@ Completely remove contacts picker permission from the file dialog
import org.chromium.ui.UiUtils;
import java.io.File;
@@ -53,6 +54 ,7 @@ public class SelectFileDialog implements
@@ -56,6 +57 ,7 @@ public class SelectFileDialog implements
private static final String TAG = "SelectFileDialog";
private static final String IMAGE_TYPE = "image";
private static final String VIDEO_TYPE = "video";
@ -1554,7 +1557,7 @@ Completely remove contacts picker permission from the file dialog
private static final String AUDIO_TYPE = "audio";
private static final String ALL_TYPES = "*/*";
@@ -143,6 +145 ,11 @@ public class SelectFileDialog implements
@@ -239,6 +241 ,11 @@ public class SelectFileDialog implements
mFileTypes = fileTypes;
}
@ -1566,7 +1569,7 @@ Completely remove contacts picker permission from the file dialog
/**
* Creates and starts an intent based on the passed fileTypes and capture value.
* @param fileTypes MIME types requested (i.e. "image/*")
@@ -170,7 +177 ,7 @@ public class SelectFileDialog implements
@@ -266,7 +273 ,7 @@ public class SelectFileDialog implements
List<String> missingPermissions = new ArrayList<>();
String storagePermission = Manifest.permission.READ_EXTERNAL_STORAGE;
boolean shouldUsePhotoPicker = shouldUsePhotoPicker();
@ -1575,7 +1578,7 @@ Completely remove contacts picker permission from the file dialog
if (!window.hasPermission(storagePermission)) missingPermissions.add(storagePermission);
} else {
if (((mSupportsImageCapture && shouldShowImageTypes())
@@ -198,7 +205 ,7 @@ public class SelectFileDialog implements
@@ -294,7 +301 ,7 @@ public class SelectFileDialog implements
}
// TODO(finnur): Remove once we figure out the cause of crbug.com/950024.
@ -1584,7 +1587,7 @@ Completely remove contacts picker permission from the file dialog
if (permissions.length != requestPermissions.length) {
throw new RuntimeException(
String.format("Permissions arrays misaligned: %d != %d",
@@ -212,7 +219 ,7 @@ public class SelectFileDialog implements
@@ -308,7 +315 ,7 @@ public class SelectFileDialog implements
}
}
@ -1593,7 +1596,7 @@ Completely remove contacts picker permission from the file dialog
onFileNotSelected();
return;
}
@@ -358,6 +365 ,7 @@ public class SelectFileDialog implements
@@ -504,6 +511 ,7 @@ public class SelectFileDialog implements
}
if (!mimeTypes.contains(mimeType)) mimeTypes.add(mimeType);
}
@ -1601,7 +1604,7 @@ Completely remove contacts picker permission from the file dialog
return mimeTypes;
}
@@ -659,6 +667 ,10 @@ public class SelectFileDialog implements
@@ -792,6 +800 ,10 @@ public class SelectFileDialog implements
return countAcceptTypesFor(superType) == mFileTypes.size();
}
@ -1626,7 +1629,7 @@ Completely remove contacts picker permission from the file dialog
<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
@@ -204,6 +204 ,8 @@ class SHELL_DIALOGS_EXPORT SelectFileDia
@@ -203,6 +203 ,8 @@ class SHELL_DIALOGS_EXPORT SelectFileDia
void* params);
bool HasMultipleFileTypeChoices();
@ -1661,3 +1664,13 @@ 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",