Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
28d274b712 | ||
|
|
c800e61cc3 | ||
|
|
d66be65985 | ||
|
|
30b0e61732 | ||
|
|
a7c33014b6 |
@@ -1,3 +1,12 @@
|
||||
# 72.0.3626.87
|
||||
* update bookmarks view after import
|
||||
|
||||
# 72.0.3626.81
|
||||
* serve empty content for blocked scripts/images (fixes https://github.com/bromite/bromite/issues/238)
|
||||
* keep support of Jelly Bean (workaround for upstream https://bugs.chromium.org/p/chromium/issues/detail?id=923477)
|
||||
|
||||
# 72.0.3626.73
|
||||
|
||||
# 72.0.3626.68
|
||||
* do not ignore save prompt for users without SD card (workaround for upstream wontfix https://bugs.chromium.org/p/chromium/issues/detail?id=916606)
|
||||
* remove third_party/analytics patch (now fixed upstream in https://chromium.googlesource.com/chromium/src.git/+/64d6a56f094efbab83802c07ad3ddffa014f9903)
|
||||
|
||||
@@ -3,6 +3,7 @@ blink_symbol_level=1
|
||||
dcheck_always_on=false
|
||||
debuggable_apks=false
|
||||
enable_ac3_eac3_audio_demuxing=true enable_hevc_demuxing=true enable_iterator_debugging=false
|
||||
enable_av1_decoder=true
|
||||
enable_hangout_services_extension=false
|
||||
enable_mdns=false
|
||||
enable_mse_mpeg2ts_stream_parser=true ffmpeg_branding="Chrome" proprietary_codecs=true
|
||||
|
||||
+1493
-391
File diff suppressed because one or more lines are too long
+212
-57
@@ -1,13 +1,16 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 1 Aug 2018 09:19:40 +0200
|
||||
Subject: Add bookmark import/export actions in bookmarks activity and page
|
||||
Subject: Add bookmark import/export actions
|
||||
|
||||
Thanks to Arnaud for the snippet on how to add toast notifications
|
||||
Add bookmark import/export actions in bookmarks activity and page
|
||||
Reduce permissions needed for bookmarks import/export
|
||||
Completely remove contacts picker permission from the file dialog
|
||||
---
|
||||
chrome/android/java/AndroidManifest.xml | 1 -
|
||||
.../java/res/menu/bookmark_action_bar_menu.xml | 14 ++
|
||||
.../browser/bookmarks/BookmarkActionBar.java | 12 ++
|
||||
.../chrome/browser/bookmarks/BookmarkActivity.java | 19 ++
|
||||
.../chrome/browser/bookmarks/BookmarkBridge.java | 56 ++++++
|
||||
.../chrome/browser/bookmarks/BookmarkActivity.java | 15 ++
|
||||
.../chrome/browser/bookmarks/BookmarkBridge.java | 46 +++++
|
||||
.../chrome/browser/bookmarks/BookmarkDelegate.java | 10 +
|
||||
.../chrome/browser/bookmarks/BookmarkManager.java | 20 ++
|
||||
.../chrome/browser/bookmarks/BookmarkPage.java | 1 +
|
||||
@@ -15,13 +18,29 @@ Thanks to Arnaud for the snippet on how to add toast notifications
|
||||
chrome/browser/BUILD.gn | 8 +-
|
||||
.../browser/android/bookmarks/bookmark_bridge.cc | 215 +++++++++++++++++++++
|
||||
chrome/browser/android/bookmarks/bookmark_bridge.h | 20 +-
|
||||
chrome/browser/importer/profile_writer.cc | 2 +
|
||||
chrome/browser/importer/profile_writer.cc | 12 ++
|
||||
chrome/browser/importer/profile_writer.h | 6 +
|
||||
chrome/common/BUILD.gn | 3 +
|
||||
chrome/utility/BUILD.gn | 7 +-
|
||||
chrome/utility/importer/bookmark_html_reader.cc | 27 ++-
|
||||
chrome/utility/importer/bookmark_html_reader.h | 9 +
|
||||
16 files changed, 419 insertions(+), 10 deletions(-)
|
||||
.../src/org/chromium/ui/base/SelectFileDialog.java | 18 +-
|
||||
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 +
|
||||
22 files changed, 445 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
|
||||
--- a/chrome/android/java/AndroidManifest.xml
|
||||
+++ b/chrome/android/java/AndroidManifest.xml
|
||||
@@ -35,7 +35,6 @@ by a child template that "extends" this file.
|
||||
{% endif %}
|
||||
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH"/>
|
||||
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_ADMIN"/>
|
||||
- <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"/>
|
||||
|
||||
diff --git a/chrome/android/java/res/menu/bookmark_action_bar_menu.xml b/chrome/android/java/res/menu/bookmark_action_bar_menu.xml
|
||||
--- a/chrome/android/java/res/menu/bookmark_action_bar_menu.xml
|
||||
+++ b/chrome/android/java/res/menu/bookmark_action_bar_menu.xml
|
||||
@@ -30,7 +49,7 @@ diff --git a/chrome/android/java/res/menu/bookmark_action_bar_menu.xml b/chrome/
|
||||
app:iconTint="@color/dark_mode_tint" />
|
||||
<item
|
||||
+ android:id="@+id/import_menu_id"
|
||||
+ android:icon="@drawable/add_circle_blue"
|
||||
+ android:icon="@drawable/ic_folder_blue_24dp"
|
||||
+ android:title="@string/import_bookmarks"
|
||||
+ android:visible="true"
|
||||
+ app:showAsAction="ifRoom"
|
||||
@@ -108,7 +127,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
static final int EDIT_BOOKMARK_REQUEST_CODE = 14;
|
||||
public static final String INTENT_VISIT_BOOKMARK_ID = "BookmarkEditActivity.VisitBookmarkId";
|
||||
|
||||
@@ -32,6 +34,22 @@ public class BookmarkActivity extends SnackbarActivity {
|
||||
@@ -32,6 +34,18 @@ public class BookmarkActivity extends SnackbarActivity {
|
||||
if (TextUtils.isEmpty(url)) url = UrlConstants.BOOKMARKS_URL;
|
||||
mBookmarkManager.updateForUrl(url);
|
||||
setContentView(mBookmarkManager.getView());
|
||||
@@ -117,10 +136,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
+ mWindowAndroid = new ActivityWindowAndroid(this, listenToActivityState);
|
||||
+ mWindowAndroid.restoreInstanceState(savedInstanceState);
|
||||
+ mBookmarkManager.setWindow(mWindowAndroid);
|
||||
+ // Set up the animation placeholder to be the SurfaceView. This disables the
|
||||
+ // SurfaceView's 'hole' clipping during animations that are notified to the window.
|
||||
+// mWindowAndroid.setAnimationPlaceholderView(
|
||||
+// mBookmarkManager.getContentViewRenderView().getSurfaceView());
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
@@ -131,7 +146,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -48,6 +66,7 @@ public class BookmarkActivity extends SnackbarActivity {
|
||||
@@ -48,6 +62,7 @@ public class BookmarkActivity extends SnackbarActivity {
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
@@ -154,7 +169,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
import android.text.TextUtils;
|
||||
import android.util.Pair;
|
||||
|
||||
@@ -13,11 +17,16 @@ import org.chromium.base.ObserverList;
|
||||
@@ -13,11 +17,15 @@ import org.chromium.base.ObserverList;
|
||||
import org.chromium.base.VisibleForTesting;
|
||||
import org.chromium.base.annotations.CalledByNative;
|
||||
import org.chromium.base.metrics.RecordHistogram;
|
||||
@@ -167,11 +182,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
import org.chromium.components.url_formatter.UrlFormatter;
|
||||
+import org.chromium.ui.base.PageTransition;
|
||||
+import org.chromium.ui.base.WindowAndroid;
|
||||
+import org.chromium.ui.widget.Toast;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -508,6 +517,24 @@ public class BookmarkBridge {
|
||||
@@ -508,6 +516,24 @@ public class BookmarkBridge {
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -196,19 +210,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
* 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.
|
||||
@@ -840,6 +867,33 @@ public class BookmarkBridge {
|
||||
@@ -840,6 +866,24 @@ public class BookmarkBridge {
|
||||
depthList.add(depth);
|
||||
}
|
||||
|
||||
+
|
||||
+ @CalledByNative
|
||||
+ public void bookmarksImported() {
|
||||
+ Context context = ContextUtils.getApplicationContext();
|
||||
+
|
||||
+ //TODO: call this after actual import
|
||||
+ //Toast.makeText(ContextUtils.getApplicationContext(), "Bookmarks imported", Toast.LENGTH_LONG).show();
|
||||
+ }
|
||||
+
|
||||
+ @CalledByNative
|
||||
+ public void bookmarksExported(String bookmarksPath) {
|
||||
+ Context context = ContextUtils.getApplicationContext();
|
||||
@@ -230,7 +235,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
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++) {
|
||||
@@ -906,6 +960,8 @@ public class BookmarkBridge {
|
||||
@@ -906,6 +950,8 @@ public class BookmarkBridge {
|
||||
boolean getFolders, boolean getBookmarks, List<BookmarkId> bookmarksList);
|
||||
private native BookmarkId nativeGetChildAt(long nativeBookmarkBridge, long id, int type,
|
||||
int index);
|
||||
@@ -358,7 +363,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
|
||||
"bookmarks/bookmark_model_factory.cc",
|
||||
"bookmarks/bookmark_model_factory.h",
|
||||
"bookmarks/bookmark_stats.cc",
|
||||
@@ -2614,8 +2618,6 @@ jumbo_split_static_library("browser") {
|
||||
@@ -2616,8 +2620,6 @@ jumbo_split_static_library("browser") {
|
||||
"banners/app_banner_infobar_delegate_desktop.h",
|
||||
"banners/app_banner_manager_desktop.cc",
|
||||
"banners/app_banner_manager_desktop.h",
|
||||
@@ -367,7 +372,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
|
||||
"certificate_viewer.h",
|
||||
"chrome_browser_field_trials_desktop.cc",
|
||||
"chrome_browser_field_trials_desktop.h",
|
||||
@@ -2704,8 +2706,6 @@ jumbo_split_static_library("browser") {
|
||||
@@ -2706,8 +2708,6 @@ jumbo_split_static_library("browser") {
|
||||
"importer/importer_uma.h",
|
||||
"importer/in_process_importer_bridge.cc",
|
||||
"importer/in_process_importer_bridge.h",
|
||||
@@ -509,27 +514,25 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
|
||||
+ select_file_dialog_ = ui::SelectFileDialog::Create(
|
||||
+ this, std::make_unique<ChromeSelectFilePolicy>(nullptr));
|
||||
+
|
||||
+ //NOTE: extension and description are not used on Android
|
||||
+ //NOTE: extension and description are not used on Android, thus not set
|
||||
+ ui::SelectFileDialog::FileTypeInfo file_type_info;
|
||||
+ file_type_info.extensions.resize(1);
|
||||
+ file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("html"));
|
||||
+ file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("htm"));
|
||||
+ file_type_info.extension_description_overrides.push_back(base::ASCIIToUTF16("Netscape Bookmark"));
|
||||
+ file_type_info.allowed_paths =
|
||||
+ ui::SelectFileDialog::FileTypeInfo::NATIVE_OR_DRIVE_PATH;
|
||||
+
|
||||
+ static const std::vector<base::string16> 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::make_pair(v_accept_types, /* use_media_capture */ false);
|
||||
+
|
||||
+ select_file_dialog_->SelectFile(
|
||||
+ ui::SelectFileDialog::SELECT_OPEN_FILE,
|
||||
+ base::string16(),
|
||||
+ import_path_,
|
||||
+ export_path_,
|
||||
+ &file_type_info,
|
||||
+ 0,
|
||||
+ base::FilePath::StringType(),
|
||||
+ window,
|
||||
+ NULL);
|
||||
+
|
||||
+ //NOTE: this should be called after the actual import
|
||||
+ Java_BookmarkBridge_bookmarksImported(env, obj);
|
||||
+ &accept_types
|
||||
+ );
|
||||
+}
|
||||
+
|
||||
+void BookmarkBridge::ExportBookmarks(JNIEnv* env,
|
||||
@@ -537,20 +540,20 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
|
||||
+ DCHECK(IsLoaded());
|
||||
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
||||
+
|
||||
+ if (import_path_.empty()) {
|
||||
+ if (!base::android::GetDownloadsDirectory(&import_path_)) {
|
||||
+ if (export_path_.empty()) {
|
||||
+ if (!base::android::GetDownloadsDirectory(&export_path_)) {
|
||||
+ LOG(ERROR) << "Could not retrieve downloads directory for bookmarks export";
|
||||
+ return;
|
||||
+ }
|
||||
+ import_path_ = import_path_.Append(FILE_PATH_LITERAL("bookmarks.html"));
|
||||
+ export_path_ = export_path_.Append(FILE_PATH_LITERAL("bookmarks.html"));
|
||||
+ }
|
||||
+
|
||||
+ bookmark_html_writer::WriteBookmarks(profile_, import_path_, NULL);
|
||||
+ bookmark_html_writer::WriteBookmarks(profile_, export_path_, NULL);
|
||||
+
|
||||
+ Java_BookmarkBridge_bookmarksExported(env, obj, ConvertUTF8ToJavaString(env, export_path_.MaybeAsASCII()));
|
||||
+
|
||||
+ //NOTE: nothing will be written if write permission has not been granted before
|
||||
+ LOG(INFO) << "Bookmarks exported successfully in " << import_path_;
|
||||
+
|
||||
+ Java_BookmarkBridge_bookmarksExported(env, obj, ConvertUTF8ToJavaString(env, import_path_.MaybeAsASCII()));
|
||||
+ LOG(INFO) << "Bookmarks exported successfully to " << export_path_;
|
||||
+}
|
||||
+
|
||||
+// Attempts to create a TemplateURL from the provided data. |title| is optional.
|
||||
@@ -578,29 +581,29 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
|
||||
+ file.Initialize(path, base::File::FLAG_OPEN | base::File::FLAG_READ);
|
||||
+ }
|
||||
+ if (!file.IsValid()) {
|
||||
+ LOG(ERROR) << "Cannot open bookmarks file for import";
|
||||
+ select_file_dialog_->ShowToast("Cannot open bookmarks file for import");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ auto fileLength = file.GetLength();
|
||||
+ if (-1 == fileLength) {
|
||||
+ LOG(ERROR) << "Cannot read bookmarks file length";
|
||||
+ select_file_dialog_->ShowToast("Cannot read bookmarks file length");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (fileLength > 10 * 1024 * 1024) {
|
||||
+ LOG(ERROR) << "Bookmarks file is too big";
|
||||
+ select_file_dialog_->ShowToast("Bookmark file is bigger than 10MB");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ std::vector<char> buffer(fileLength);
|
||||
+ if (-1 == file.ReadAtCurrentPos(buffer.data(), fileLength)) {
|
||||
+ LOG(ERROR) << "Could not read bookmarks file";
|
||||
+ select_file_dialog_->ShowToast("Could not read bookmarks file");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (buffer.empty()) {
|
||||
+ LOG(ERROR) << "Empty bookmarks file";
|
||||
+ select_file_dialog_->ShowToast("Empty bookmarks file");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
@@ -618,11 +621,11 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
|
||||
+ &search_engines,
|
||||
+ nullptr);
|
||||
+
|
||||
+ // writing to profile will begin extensive changes and use the same bookmarks model for persisting changes
|
||||
+ auto *writer = new ProfileWriter(profile_);
|
||||
+
|
||||
+ if (!bookmarks.empty()) {
|
||||
+ writer->AddBookmarks(bookmarks, base::ASCIIToUTF16("Imported"));
|
||||
+ // adding bookmarks will begin extensive changes to the model
|
||||
+ writer->AddBookmarksWithModel(bookmark_model_, bookmarks, base::ASCIIToUTF16("Imported"));
|
||||
+ }
|
||||
+ if (!search_engines.empty()) {
|
||||
+ TemplateURLService::OwnedTemplateURLVector owned_template_urls;
|
||||
@@ -635,8 +638,10 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
|
||||
+ writer->AddKeywords(std::move(owned_template_urls), false);
|
||||
+ }
|
||||
+
|
||||
+ select_file_dialog_->ShowToast("Bookmarks import complete");
|
||||
+
|
||||
+ LOG(INFO) << "Imported " << bookmarks.size() << " bookmarks and " <<
|
||||
+ search_engines.size() << " search engines from " << import_path_;
|
||||
+ search_engines.size() << " search engines from " << path.MaybeAsASCII();
|
||||
+}
|
||||
+
|
||||
+void BookmarkBridge::FileSelectionCanceled(void* params) {
|
||||
@@ -698,7 +703,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser
|
||||
void ShimBeingDeleted(PartnerBookmarksShim* shim) override;
|
||||
|
||||
Profile* profile_;
|
||||
+ base::FilePath import_path_;
|
||||
+ base::FilePath export_path_;
|
||||
JavaObjectWeakGlobalRef weak_java_ref_;
|
||||
bookmarks::BookmarkModel* bookmark_model_; // weak
|
||||
bookmarks::ManagedBookmarkService* managed_bookmark_service_; // weak
|
||||
@@ -727,6 +732,46 @@ diff --git a/chrome/browser/importer/profile_writer.cc b/chrome/browser/importer
|
||||
}
|
||||
|
||||
void ProfileWriter::AddHomepage(const GURL& home_page) {
|
||||
@@ -123,6 +125,16 @@ void ProfileWriter::AddBookmarks(
|
||||
return;
|
||||
|
||||
BookmarkModel* model = BookmarkModelFactory::GetForBrowserContext(profile_);
|
||||
+ AddBookmarksWithModel(model, bookmarks, top_level_folder_name);
|
||||
+}
|
||||
+
|
||||
+void ProfileWriter::AddBookmarksWithModel(
|
||||
+ BookmarkModel* model,
|
||||
+ const std::vector<ImportedBookmarkEntry>& bookmarks,
|
||||
+ const base::string16& top_level_folder_name) {
|
||||
+ if (bookmarks.empty())
|
||||
+ return;
|
||||
+
|
||||
DCHECK(model->loaded());
|
||||
|
||||
// If the bookmark bar is currently empty, we should import directly to it.
|
||||
diff --git a/chrome/browser/importer/profile_writer.h b/chrome/browser/importer/profile_writer.h
|
||||
--- 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/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"
|
||||
@@ -67,6 +68,11 @@ class ProfileWriter : public base::RefCountedThreadSafe<ProfileWriter> {
|
||||
const std::vector<ImportedBookmarkEntry>& bookmarks,
|
||||
const base::string16& top_level_folder_name);
|
||||
|
||||
+ virtual void AddBookmarksWithModel(
|
||||
+ bookmarks::BookmarkModel* model,
|
||||
+ const std::vector<ImportedBookmarkEntry>& bookmarks,
|
||||
+ const base::string16& top_level_folder_name);
|
||||
+
|
||||
virtual void AddFavicons(const favicon_base::FaviconUsageDataList& favicons);
|
||||
|
||||
// Adds the TemplateURLs in |template_urls| to the local store.
|
||||
diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
|
||||
--- a/chrome/common/BUILD.gn
|
||||
+++ b/chrome/common/BUILD.gn
|
||||
@@ -870,6 +915,116 @@ diff --git a/chrome/utility/importer/bookmark_html_reader.h b/chrome/utility/imp
|
||||
// Returns true if |url| should be imported as a search engine, i.e. because it
|
||||
// has replacement terms. Chrome treats such bookmarks as search engines rather
|
||||
// than true bookmarks.
|
||||
diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
|
||||
--- a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
|
||||
+++ b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
|
||||
@@ -32,6 +32,7 @@ import org.chromium.base.task.AsyncTask;
|
||||
import org.chromium.ui.ContactsPickerListener;
|
||||
import org.chromium.ui.PhotoPickerListener;
|
||||
import org.chromium.ui.R;
|
||||
+import org.chromium.ui.widget.Toast;
|
||||
import org.chromium.ui.UiUtils;
|
||||
|
||||
import java.io.File;
|
||||
@@ -52,6 +53,7 @@ public class SelectFileDialog
|
||||
private static final String IMAGE_TYPE = "image/";
|
||||
private static final String VIDEO_TYPE = "video/";
|
||||
private static final String AUDIO_TYPE = "audio/";
|
||||
+ private static final String HTML_TYPE = "text/html";
|
||||
private static final String ALL_IMAGE_TYPES = IMAGE_TYPE + "*";
|
||||
private static final String ALL_VIDEO_TYPES = VIDEO_TYPE + "*";
|
||||
private static final String ALL_AUDIO_TYPES = AUDIO_TYPE + "*";
|
||||
@@ -130,6 +132,11 @@ public class SelectFileDialog
|
||||
mFileTypes = fileTypes;
|
||||
}
|
||||
|
||||
+ @CalledByNative
|
||||
+ private void showToast(String message) {
|
||||
+ Toast.makeText(ContextUtils.getApplicationContext(), message, Toast.LENGTH_LONG).show();
|
||||
+ }
|
||||
+
|
||||
/**
|
||||
* Creates and starts an intent based on the passed fileTypes and capture value.
|
||||
* @param fileTypes MIME types requested (i.e. "image/*")
|
||||
@@ -159,7 +166,7 @@ public class SelectFileDialog
|
||||
if (!window.hasPermission(Manifest.permission.READ_CONTACTS)) {
|
||||
missingPermissions.add(Manifest.permission.READ_CONTACTS);
|
||||
}
|
||||
- } else if (shouldUsePhotoPicker()) {
|
||||
+ } else if (shouldUsePhotoPicker() || shouldShowHtmlTypes()) {
|
||||
if (!window.hasPermission(Manifest.permission.READ_EXTERNAL_STORAGE)) {
|
||||
missingPermissions.add(Manifest.permission.READ_EXTERNAL_STORAGE);
|
||||
}
|
||||
@@ -324,9 +331,7 @@ public class SelectFileDialog
|
||||
* 3.) There is a valid Android Activity associated with the file request.
|
||||
*/
|
||||
private boolean shouldUseContactsPicker() {
|
||||
- if (mFileTypes.size() != 1) return false;
|
||||
- if (!mFileTypes.get(0).equals("text/json+contacts")) return false;
|
||||
- return UiUtils.shouldShowContactsPicker() && mWindowAndroid.getActivity().get() != null;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -347,6 +352,7 @@ public class SelectFileDialog
|
||||
}
|
||||
if (!mimeTypes.contains(mimeType)) mimeTypes.add(mimeType);
|
||||
}
|
||||
+ if (mimeTypes.size() == 0) return null;
|
||||
return mimeTypes;
|
||||
}
|
||||
|
||||
@@ -649,6 +655,10 @@ public class SelectFileDialog
|
||||
return countAcceptTypesFor(specificType) > 0;
|
||||
}
|
||||
|
||||
+ private boolean shouldShowHtmlTypes() {
|
||||
+ return countAcceptTypesFor(HTML_TYPE) > 0;
|
||||
+ }
|
||||
+
|
||||
private boolean shouldShowImageTypes() {
|
||||
return shouldShowTypes(ALL_IMAGE_TYPES, IMAGE_TYPE);
|
||||
}
|
||||
diff --git a/ui/shell_dialogs/select_file_dialog.h b/ui/shell_dialogs/select_file_dialog.h
|
||||
--- a/ui/shell_dialogs/select_file_dialog.h
|
||||
+++ b/ui/shell_dialogs/select_file_dialog.h
|
||||
@@ -187,6 +187,8 @@ class SHELL_DIALOGS_EXPORT SelectFileDialog
|
||||
void* params);
|
||||
bool HasMultipleFileTypeChoices();
|
||||
|
||||
+ virtual void ShowToast(const std::string& message) = 0;
|
||||
+
|
||||
protected:
|
||||
friend class base::RefCountedThreadSafe<SelectFileDialog>;
|
||||
|
||||
diff --git a/ui/shell_dialogs/select_file_dialog_android.cc b/ui/shell_dialogs/select_file_dialog_android.cc
|
||||
--- a/ui/shell_dialogs/select_file_dialog_android.cc
|
||||
+++ b/ui/shell_dialogs/select_file_dialog_android.cc
|
||||
@@ -139,6 +139,12 @@ void SelectFileDialogImpl::SelectFileImpl(
|
||||
owning_window->GetJavaObject());
|
||||
}
|
||||
|
||||
+void SelectFileDialogImpl::ShowToast(const std::string& message) {
|
||||
+ JNIEnv* env = base::android::AttachCurrentThread();
|
||||
+
|
||||
+ Java_SelectFileDialog_showToast(env, java_object_, base::android::ConvertUTF8ToJavaString(env, message));
|
||||
+}
|
||||
+
|
||||
SelectFileDialogImpl::~SelectFileDialogImpl() {
|
||||
}
|
||||
|
||||
diff --git a/ui/shell_dialogs/select_file_dialog_android.h b/ui/shell_dialogs/select_file_dialog_android.h
|
||||
--- a/ui/shell_dialogs/select_file_dialog_android.h
|
||||
+++ b/ui/shell_dialogs/select_file_dialog_android.h
|
||||
@@ -55,6 +55,8 @@ class SelectFileDialogImpl : public SelectFileDialog {
|
||||
gfx::NativeWindow owning_window,
|
||||
void* params) override;
|
||||
|
||||
+ void ShowToast(const std::string& message) override;
|
||||
+
|
||||
protected:
|
||||
~SelectFileDialogImpl() override;
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -41,7 +41,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
|
||||
@@ -39,6 +39,7 @@ import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
|
||||
@@ -41,6 +41,7 @@ import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
|
||||
import org.chromium.chrome.browser.notifications.NotificationPlatformBridge;
|
||||
import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
|
||||
import org.chromium.chrome.browser.profiles.Profile;
|
||||
@@ -49,7 +49,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
|
||||
import org.chromium.chrome.browser.searchwidget.SearchActivity;
|
||||
import org.chromium.chrome.browser.tab.Tab;
|
||||
import org.chromium.chrome.browser.tabmodel.DocumentModeAssassin;
|
||||
@@ -273,6 +274,7 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
|
||||
@@ -275,6 +276,7 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
|
||||
*/
|
||||
public static boolean isCustomTabIntent(Intent intent) {
|
||||
if (intent == null) return false;
|
||||
|
||||
@@ -18,12 +18,12 @@ New mechanism for adblocking based on Brave's adblocking hook
|
||||
.../browser/appmenu/AppMenuPropertiesDelegate.java | 38 +++
|
||||
.../CustomTabAppMenuPropertiesDelegate.java | 2 +
|
||||
.../java/strings/android_chrome_strings.grd | 11 +
|
||||
chrome/browser/net/chrome_network_delegate.cc | 62 ++++
|
||||
chrome/browser/net/chrome_network_delegate.cc | 75 +++++
|
||||
.../subresource_filter_content_settings_manager.cc | 1 +
|
||||
net/BUILD.gn | 7 +
|
||||
net/url_request/adblock_intercept.cc | 341 +++++++++++++++++++++
|
||||
net/url_request/adblock_intercept.h | 41 +++
|
||||
12 files changed, 542 insertions(+)
|
||||
12 files changed, 555 insertions(+)
|
||||
create mode 100644 net/url_request/adblock_intercept.cc
|
||||
create mode 100644 net/url_request/adblock_intercept.h
|
||||
|
||||
@@ -213,11 +213,13 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
|
||||
#endif
|
||||
|
||||
#if defined(OS_CHROMEOS)
|
||||
@@ -193,16 +195,76 @@ void ChromeNetworkDelegate::set_cookie_settings(
|
||||
@@ -193,16 +195,89 @@ void ChromeNetworkDelegate::set_cookie_settings(
|
||||
cookie_settings_ = cookie_settings;
|
||||
}
|
||||
|
||||
+#define TRANSPARENT1PXGIF "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
|
||||
+#define EMPTYJS "data:text/javascript;base64,Cg=="
|
||||
+#define EMPTYCSS "data:text/css;base64,Cg=="
|
||||
+
|
||||
int ChromeNetworkDelegate::OnBeforeURLRequest(
|
||||
net::URLRequest* request,
|
||||
@@ -268,12 +270,21 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
|
||||
+ }
|
||||
+
|
||||
+ if (block) {
|
||||
+ if (content::RESOURCE_TYPE_IMAGE == info->GetResourceType()) {
|
||||
+ *new_url = GURL(TRANSPARENT1PXGIF);
|
||||
+ } else {
|
||||
+ *new_url = GURL("");
|
||||
+ switch (info->GetResourceType()) {
|
||||
+ case content::RESOURCE_TYPE_IMAGE:
|
||||
+ case content::RESOURCE_TYPE_FAVICON:
|
||||
+ *new_url = GURL(TRANSPARENT1PXGIF);
|
||||
+ break;
|
||||
+ case content::RESOURCE_TYPE_SCRIPT:
|
||||
+ *new_url = GURL(EMPTYJS);
|
||||
+ break;
|
||||
+ case content::RESOURCE_TYPE_STYLESHEET:
|
||||
+ *new_url = GURL(EMPTYCSS);
|
||||
+ break;
|
||||
+ default:
|
||||
+ *new_url = GURL("");
|
||||
+ return net::ERR_BLOCKED_BY_ADMINISTRATOR;
|
||||
+ }
|
||||
+ return net::ERR_BLOCKED_BY_ADMINISTRATOR;
|
||||
+ }
|
||||
+ } // valid URL and info
|
||||
+ } // request
|
||||
@@ -286,6 +297,8 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
|
||||
}
|
||||
|
||||
+#undef TRANSPARENT1PXGIF
|
||||
+#undef EMPTYJS
|
||||
+#undef EMPTYCSS
|
||||
+
|
||||
int ChromeNetworkDelegate::OnBeforeStartTransaction(
|
||||
net::URLRequest* request,
|
||||
|
||||
@@ -36,7 +36,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNu
|
||||
diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
|
||||
--- a/chrome/browser/android/chrome_feature_list.cc
|
||||
+++ b/chrome/browser/android/chrome_feature_list.cc
|
||||
@@ -350,7 +350,7 @@ const base::Feature kIntentBlockExternalFormRedirectsNoGesture{
|
||||
@@ -351,7 +351,7 @@ const base::Feature kIntentBlockExternalFormRedirectsNoGesture{
|
||||
base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kJellyBeanSupported{"JellyBeanSupported",
|
||||
|
||||
@@ -1,118 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 10 Nov 2018 16:09:26 +0100
|
||||
Subject: Reduce permissions needed for bookmarks import/export
|
||||
|
||||
Completely remove contacts picker permission from the file dialog
|
||||
---
|
||||
chrome/android/java/AndroidManifest.xml | 1 -
|
||||
chrome/browser/android/bookmarks/bookmark_bridge.cc | 20 +++++++++++++++++---
|
||||
.../src/org/chromium/ui/base/SelectFileDialog.java | 12 ++++++++----
|
||||
3 files changed, 25 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
|
||||
--- a/chrome/android/java/AndroidManifest.xml
|
||||
+++ b/chrome/android/java/AndroidManifest.xml
|
||||
@@ -35,7 +35,6 @@ by a child template that "extends" this file.
|
||||
{% endif %}
|
||||
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH"/>
|
||||
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_ADMIN"/>
|
||||
- <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"/>
|
||||
|
||||
diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browser/android/bookmarks/bookmark_bridge.cc
|
||||
--- a/chrome/browser/android/bookmarks/bookmark_bridge.cc
|
||||
+++ b/chrome/browser/android/bookmarks/bookmark_bridge.cc
|
||||
@@ -552,14 +552,23 @@ void BookmarkBridge::ImportBookmarks(JNIEnv* env,
|
||||
select_file_dialog_ = ui::SelectFileDialog::Create(
|
||||
this, std::make_unique<ChromeSelectFilePolicy>(nullptr));
|
||||
|
||||
- //NOTE: extension and description are not used on Android
|
||||
+ //NOTE: extension and description are not used on Android, thus not set
|
||||
ui::SelectFileDialog::FileTypeInfo file_type_info;
|
||||
+
|
||||
+#if defined(OS_ANDROID)
|
||||
+ static const std::vector<base::string16> 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::make_pair(v_accept_types, /* use_media_capture */ false);
|
||||
+#else
|
||||
file_type_info.extensions.resize(1);
|
||||
file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("html"));
|
||||
file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("htm"));
|
||||
file_type_info.extension_description_overrides.push_back(base::ASCIIToUTF16("Netscape Bookmark"));
|
||||
file_type_info.allowed_paths =
|
||||
- ui::SelectFileDialog::FileTypeInfo::NATIVE_OR_DRIVE_PATH;
|
||||
+ ui::SelectFileDialog::FileTypeInfo::ANY_PATH;
|
||||
+#endif
|
||||
|
||||
select_file_dialog_->SelectFile(
|
||||
ui::SelectFileDialog::SELECT_OPEN_FILE,
|
||||
@@ -569,7 +578,12 @@ void BookmarkBridge::ImportBookmarks(JNIEnv* env,
|
||||
0,
|
||||
base::FilePath::StringType(),
|
||||
window,
|
||||
- NULL);
|
||||
+#if defined(OS_ANDROID)
|
||||
+ &accept_types
|
||||
+#else
|
||||
+ NULL
|
||||
+#endif
|
||||
+);
|
||||
|
||||
//NOTE: this should be called after the actual import
|
||||
Java_BookmarkBridge_bookmarksImported(env, obj);
|
||||
diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
|
||||
--- a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
|
||||
+++ b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
|
||||
@@ -52,6 +52,7 @@ public class SelectFileDialog
|
||||
private static final String IMAGE_TYPE = "image/";
|
||||
private static final String VIDEO_TYPE = "video/";
|
||||
private static final String AUDIO_TYPE = "audio/";
|
||||
+ private static final String HTML_TYPE = "text/html";
|
||||
private static final String ALL_IMAGE_TYPES = IMAGE_TYPE + "*";
|
||||
private static final String ALL_VIDEO_TYPES = VIDEO_TYPE + "*";
|
||||
private static final String ALL_AUDIO_TYPES = AUDIO_TYPE + "*";
|
||||
@@ -159,7 +160,7 @@ public class SelectFileDialog
|
||||
if (!window.hasPermission(Manifest.permission.READ_CONTACTS)) {
|
||||
missingPermissions.add(Manifest.permission.READ_CONTACTS);
|
||||
}
|
||||
- } else if (shouldUsePhotoPicker()) {
|
||||
+ } else if (shouldUsePhotoPicker() || shouldShowHtmlTypes()) {
|
||||
if (!window.hasPermission(Manifest.permission.READ_EXTERNAL_STORAGE)) {
|
||||
missingPermissions.add(Manifest.permission.READ_EXTERNAL_STORAGE);
|
||||
}
|
||||
@@ -324,9 +325,7 @@ public class SelectFileDialog
|
||||
* 3.) There is a valid Android Activity associated with the file request.
|
||||
*/
|
||||
private boolean shouldUseContactsPicker() {
|
||||
- if (mFileTypes.size() != 1) return false;
|
||||
- if (!mFileTypes.get(0).equals("text/json+contacts")) return false;
|
||||
- return UiUtils.shouldShowContactsPicker() && mWindowAndroid.getActivity().get() != null;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -347,6 +346,7 @@ public class SelectFileDialog
|
||||
}
|
||||
if (!mimeTypes.contains(mimeType)) mimeTypes.add(mimeType);
|
||||
}
|
||||
+ if (mimeTypes.size() == 0) return null;
|
||||
return mimeTypes;
|
||||
}
|
||||
|
||||
@@ -649,6 +649,10 @@ public class SelectFileDialog
|
||||
return countAcceptTypesFor(specificType) > 0;
|
||||
}
|
||||
|
||||
+ private boolean shouldShowHtmlTypes() {
|
||||
+ return countAcceptTypesFor(HTML_TYPE) > 0;
|
||||
+ }
|
||||
+
|
||||
private boolean shouldShowImageTypes() {
|
||||
return shouldShowTypes(ALL_IMAGE_TYPES, IMAGE_TYPE);
|
||||
}
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -56,7 +56,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcu
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
|
||||
@@ -1405,7 +1405,7 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent
|
||||
@@ -1410,7 +1410,7 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent
|
||||
public boolean onMenuOrKeyboardAction(int id, boolean fromMenu) {
|
||||
// Disable creating new tabs, bookmark, history, print, help, focus_url, etc.
|
||||
if (id == R.id.focus_url_bar || id == R.id.all_bookmarks_menu_id
|
||||
|
||||
@@ -0,0 +1,401 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Tue, 29 Jan 2019 01:02:07 +0100
|
||||
Subject: Rollback android:minSdkVersion from 19 (KitKat) to 16 (JellyBean)
|
||||
|
||||
This reverts commit 9a48587dbd1988cf5066b454e7d09ae35d124366.
|
||||
---
|
||||
.../test/embedded_test_server/java/AndroidManifest.xml | 2 +-
|
||||
android_webview/tools/automated_ui_tests/java/AndroidManifest.xml | 2 +-
|
||||
base/android/jni_generator/AndroidManifest.xml | 2 +-
|
||||
build/android/AndroidManifest.xml | 2 +-
|
||||
build/android/gradle/android.jinja | 2 +-
|
||||
chrome/android/BUILD.gn | 8 ++++----
|
||||
chrome/android/java/res/layout/autofill_local_card_editor.xml | 4 ++--
|
||||
.../test/android/chrome_public_test_support/AndroidManifest.xml | 2 +-
|
||||
components/cronet/android/sample/AndroidManifest.xml | 3 +--
|
||||
components/cronet/android/sample/javatests/AndroidManifest.xml | 3 +--
|
||||
components/cronet/android/test/javaperftests/AndroidManifest.xml | 3 +--
|
||||
components/cronet/android/test/javatests/AndroidManifest.xml | 3 +--
|
||||
.../test/android/browsertests_apk/AndroidManifest.xml.jinja2 | 2 +-
|
||||
content/shell/android/browsertests_apk/AndroidManifest.xml.jinja2 | 2 +-
|
||||
content/shell/android/javatests/AndroidManifest.xml | 2 +-
|
||||
content/shell/android/linker_test_apk/AndroidManifest.xml.jinja2 | 2 +-
|
||||
content/shell/android/shell_apk/AndroidManifest.xml.jinja2 | 2 +-
|
||||
docs/android_build_instructions.md | 2 +-
|
||||
mojo/public/java/system/javatests/AndroidManifest.xml | 2 +-
|
||||
net/android/unittest_support/AndroidManifest.xml | 2 +-
|
||||
net/test/android/javatests/AndroidManifest.xml | 2 +-
|
||||
remoting/android/java/AndroidManifest.xml.jinja2 | 2 +-
|
||||
remoting/android/javatests/AndroidManifest.xml.jinja2 | 2 +-
|
||||
testing/android/driver/java/AndroidManifest.xml | 2 +-
|
||||
testing/android/native_test/java/AndroidManifest.xml.jinja2 | 2 +-
|
||||
tools/android/audio_focus_grabber/java/AndroidManifest.xml | 2 +-
|
||||
tools/android/push_apps_to_background/AndroidManifest.xml | 2 +-
|
||||
27 files changed, 31 insertions(+), 35 deletions(-)
|
||||
|
||||
diff --git a/android_webview/test/embedded_test_server/java/AndroidManifest.xml b/android_webview/test/embedded_test_server/java/AndroidManifest.xml
|
||||
--- a/android_webview/test/embedded_test_server/java/AndroidManifest.xml
|
||||
+++ b/android_webview/test/embedded_test_server/java/AndroidManifest.xml
|
||||
@@ -8,7 +8,7 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="org.chromium.android_webview.test.support">
|
||||
|
||||
- <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
|
||||
+ <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
|
||||
diff --git a/android_webview/tools/automated_ui_tests/java/AndroidManifest.xml b/android_webview/tools/automated_ui_tests/java/AndroidManifest.xml
|
||||
--- a/android_webview/tools/automated_ui_tests/java/AndroidManifest.xml
|
||||
+++ b/android_webview/tools/automated_ui_tests/java/AndroidManifest.xml
|
||||
@@ -10,7 +10,7 @@
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0" >
|
||||
|
||||
- <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
|
||||
+ <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||
diff --git a/base/android/jni_generator/AndroidManifest.xml b/base/android/jni_generator/AndroidManifest.xml
|
||||
--- a/base/android/jni_generator/AndroidManifest.xml
|
||||
+++ b/base/android/jni_generator/AndroidManifest.xml
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.jni.generator">
|
||||
|
||||
- <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="24" />
|
||||
+ <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="24" />
|
||||
<application></application>
|
||||
|
||||
</manifest>
|
||||
diff --git a/build/android/AndroidManifest.xml b/build/android/AndroidManifest.xml
|
||||
--- a/build/android/AndroidManifest.xml
|
||||
+++ b/build/android/AndroidManifest.xml
|
||||
@@ -15,6 +15,6 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.dummy">
|
||||
|
||||
- <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="24" />
|
||||
+ <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="24" />
|
||||
|
||||
</manifest>
|
||||
diff --git a/build/android/gradle/android.jinja b/build/android/gradle/android.jinja
|
||||
--- a/build/android/gradle/android.jinja
|
||||
+++ b/build/android/gradle/android.jinja
|
||||
@@ -52,7 +52,7 @@ android {
|
||||
|
||||
defaultConfig {
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
- minSdkVersion 19
|
||||
+ minSdkVersion 16
|
||||
targetSdkVersion {{ target_sdk_version }}
|
||||
}
|
||||
|
||||
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
|
||||
--- a/chrome/android/BUILD.gn
|
||||
+++ b/chrome/android/BUILD.gn
|
||||
@@ -63,7 +63,7 @@ jinja_template("chrome_public_android_manifest") {
|
||||
output = chrome_public_android_manifest
|
||||
variables = chrome_public_jinja_variables
|
||||
variables += [
|
||||
- "min_sdk_version=19",
|
||||
+ "min_sdk_version=16",
|
||||
"target_sdk_version=$android_sdk_version",
|
||||
]
|
||||
}
|
||||
@@ -1459,7 +1459,7 @@ template("chrome_public_apk_or_module_tmpl") {
|
||||
android_manifest = chrome_modern_public_android_manifest
|
||||
android_manifest_dep = ":chrome_modern_public_android_manifest"
|
||||
} else {
|
||||
- min_sdk_version = 19
|
||||
+ min_sdk_version = 16
|
||||
android_manifest = chrome_public_android_manifest
|
||||
android_manifest_dep = ":chrome_public_android_manifest"
|
||||
}
|
||||
@@ -1663,7 +1663,7 @@ jinja_template("chrome_public_test_apk_manifest") {
|
||||
variables = default_chrome_public_jinja_variables
|
||||
variables += [
|
||||
"manifest_package=$test_manifest_package",
|
||||
- "min_sdk_version=19",
|
||||
+ "min_sdk_version=16",
|
||||
"target_sdk_version=$android_sdk_version",
|
||||
]
|
||||
}
|
||||
@@ -1674,7 +1674,7 @@ jinja_template("chrome_public_test_vr_apk_manifest") {
|
||||
output = chrome_public_test_vr_apk_manifest
|
||||
variables = chrome_public_jinja_variables
|
||||
variables += [
|
||||
- "min_sdk_version=19",
|
||||
+ "min_sdk_version=16",
|
||||
"target_sdk_version=$android_sdk_version",
|
||||
]
|
||||
}
|
||||
diff --git a/chrome/android/java/res/layout/autofill_local_card_editor.xml b/chrome/android/java/res/layout/autofill_local_card_editor.xml
|
||||
--- a/chrome/android/java/res/layout/autofill_local_card_editor.xml
|
||||
+++ b/chrome/android/java/res/layout/autofill_local_card_editor.xml
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
<!-- TODO(crbug.com/900912): Fix and remove lint ignore -->
|
||||
<EditText
|
||||
- tools:ignore="Autofill,LabelFor"
|
||||
+ tools:ignore="Autofill"
|
||||
android:id="@+id/credit_card_name_edit"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
<!-- TODO(crbug.com/900912): Fix and remove lint ignore -->
|
||||
<EditText
|
||||
- tools:ignore="Autofill,LabelFor"
|
||||
+ tools:ignore="Autofill"
|
||||
android:id="@+id/credit_card_number_edit"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
diff --git a/chrome/test/android/chrome_public_test_support/AndroidManifest.xml b/chrome/test/android/chrome_public_test_support/AndroidManifest.xml
|
||||
--- a/chrome/test/android/chrome_public_test_support/AndroidManifest.xml
|
||||
+++ b/chrome/test/android/chrome_public_test_support/AndroidManifest.xml
|
||||
@@ -5,7 +5,7 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="org.chromium.chrome.tests.support">
|
||||
- <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="22" />
|
||||
+ <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="22" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<application>
|
||||
<service android:name="org.chromium.chrome.browser.media.TestMediaRouteProviderService"
|
||||
diff --git a/components/cronet/android/sample/AndroidManifest.xml b/components/cronet/android/sample/AndroidManifest.xml
|
||||
--- a/components/cronet/android/sample/AndroidManifest.xml
|
||||
+++ b/components/cronet/android/sample/AndroidManifest.xml
|
||||
@@ -9,8 +9,7 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.chromium.cronet_sample_apk">
|
||||
|
||||
- <!-- //components/cronet still needs to support Jelly Bean. See crbug.com/922656 -->
|
||||
- <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
|
||||
+ <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" />
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<application android:name="CronetSampleApplication"
|
||||
diff --git a/components/cronet/android/sample/javatests/AndroidManifest.xml b/components/cronet/android/sample/javatests/AndroidManifest.xml
|
||||
--- a/components/cronet/android/sample/javatests/AndroidManifest.xml
|
||||
+++ b/components/cronet/android/sample/javatests/AndroidManifest.xml
|
||||
@@ -8,8 +8,7 @@
|
||||
doesn't ignore this. -->
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.chromium.cronet_sample_apk.tests">
|
||||
- <!-- //components/cronet still needs to support Jelly Bean. See crbug.com/922656 -->
|
||||
- <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
|
||||
+ <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" />
|
||||
<uses-permission android:name="android.permission.RUN_INSTRUMENTATION" />
|
||||
<!-- We add an application tag here just so that we can indicate that this
|
||||
package needs to link against the android.test library, which is
|
||||
diff --git a/components/cronet/android/test/javaperftests/AndroidManifest.xml b/components/cronet/android/test/javaperftests/AndroidManifest.xml
|
||||
--- a/components/cronet/android/test/javaperftests/AndroidManifest.xml
|
||||
+++ b/components/cronet/android/test/javaperftests/AndroidManifest.xml
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.chromium.net">
|
||||
- <!-- //components/cronet still needs to support Jelly Bean. See crbug.com/922656 -->
|
||||
- <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
|
||||
+ <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" />
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
diff --git a/components/cronet/android/test/javatests/AndroidManifest.xml b/components/cronet/android/test/javatests/AndroidManifest.xml
|
||||
--- a/components/cronet/android/test/javatests/AndroidManifest.xml
|
||||
+++ b/components/cronet/android/test/javatests/AndroidManifest.xml
|
||||
@@ -8,8 +8,7 @@
|
||||
doesn't ignore this. -->
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.chromium.net.tests">
|
||||
- <!-- //components/cronet still needs to support Jelly Bean. See crbug.com/922656 -->
|
||||
- <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="24" />
|
||||
+ <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" />
|
||||
<uses-permission android:name="android.permission.RUN_INSTRUMENTATION" />
|
||||
<!-- We add an application tag here just so that we can indicate that this
|
||||
package needs to link against the android.test library, which is
|
||||
diff --git a/components/test/android/browsertests_apk/AndroidManifest.xml.jinja2 b/components/test/android/browsertests_apk/AndroidManifest.xml.jinja2
|
||||
--- a/components/test/android/browsertests_apk/AndroidManifest.xml.jinja2
|
||||
+++ b/components/test/android/browsertests_apk/AndroidManifest.xml.jinja2
|
||||
@@ -9,7 +9,7 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.chromium.components_browsertests_apk">
|
||||
|
||||
- <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
|
||||
+ <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<uses-permission android:name="android.permission.CAMERA" />
|
||||
diff --git a/content/shell/android/browsertests_apk/AndroidManifest.xml.jinja2 b/content/shell/android/browsertests_apk/AndroidManifest.xml.jinja2
|
||||
--- a/content/shell/android/browsertests_apk/AndroidManifest.xml.jinja2
|
||||
+++ b/content/shell/android/browsertests_apk/AndroidManifest.xml.jinja2
|
||||
@@ -9,7 +9,7 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.chromium.content_browsertests_apk">
|
||||
|
||||
- <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
|
||||
+ <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<uses-permission android:name="android.permission.CAMERA" />
|
||||
diff --git a/content/shell/android/javatests/AndroidManifest.xml b/content/shell/android/javatests/AndroidManifest.xml
|
||||
--- a/content/shell/android/javatests/AndroidManifest.xml
|
||||
+++ b/content/shell/android/javatests/AndroidManifest.xml
|
||||
@@ -6,7 +6,7 @@
|
||||
doesn't ignore this. -->
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.chromium.content_shell_apk.tests">
|
||||
- <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
|
||||
+ <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
|
||||
<uses-permission android:name="android.permission.RUN_INSTRUMENTATION" />
|
||||
<!-- We add an application tag here just so that we can indicate that this
|
||||
package needs to link against the android.test library, which is
|
||||
diff --git a/content/shell/android/linker_test_apk/AndroidManifest.xml.jinja2 b/content/shell/android/linker_test_apk/AndroidManifest.xml.jinja2
|
||||
--- a/content/shell/android/linker_test_apk/AndroidManifest.xml.jinja2
|
||||
+++ b/content/shell/android/linker_test_apk/AndroidManifest.xml.jinja2
|
||||
@@ -9,7 +9,7 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.chromium.chromium_linker_test_apk">
|
||||
|
||||
- <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
|
||||
+ <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<uses-permission android:name="android.permission.CAMERA" />
|
||||
diff --git a/content/shell/android/shell_apk/AndroidManifest.xml.jinja2 b/content/shell/android/shell_apk/AndroidManifest.xml.jinja2
|
||||
--- a/content/shell/android/shell_apk/AndroidManifest.xml.jinja2
|
||||
+++ b/content/shell/android/shell_apk/AndroidManifest.xml.jinja2
|
||||
@@ -9,7 +9,7 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.chromium.content_shell_apk">
|
||||
|
||||
- <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
|
||||
+ <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<uses-permission android:name="android.permission.CAMERA"/>
|
||||
diff --git a/docs/android_build_instructions.md b/docs/android_build_instructions.md
|
||||
--- a/docs/android_build_instructions.md
|
||||
+++ b/docs/android_build_instructions.md
|
||||
@@ -162,7 +162,7 @@ the version of Android running on a device. Chrome uses this feature to target
|
||||
3 different versions using 3 different ninja targets:
|
||||
|
||||
1. `chrome_public_apk` (ChromePublic.apk)
|
||||
- * `minSdkVersion=19` (KitKat).
|
||||
+ * `minSdkVersion=16` (Jelly Bean).
|
||||
* Stores libchrome.so compressed within the APK.
|
||||
* Uses [Crazy Linker](https://cs.chromium.org/chromium/src/base/android/linker/BUILD.gn?rcl=6bb29391a86f2be58c626170156cbfaa2cbc5c91&l=9).
|
||||
* Shipped only for Android < 21, but still works fine on Android >= 21.
|
||||
diff --git a/mojo/public/java/system/javatests/AndroidManifest.xml b/mojo/public/java/system/javatests/AndroidManifest.xml
|
||||
--- a/mojo/public/java/system/javatests/AndroidManifest.xml
|
||||
+++ b/mojo/public/java/system/javatests/AndroidManifest.xml
|
||||
@@ -8,7 +8,7 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="org.chromium.mojo.tests">
|
||||
|
||||
- <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="21" />
|
||||
+ <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" />
|
||||
|
||||
<uses-permission android:name="android.permission.INJECT_EVENTS"
|
||||
tools:ignore="ProtectedPermissions"/>
|
||||
diff --git a/net/android/unittest_support/AndroidManifest.xml b/net/android/unittest_support/AndroidManifest.xml
|
||||
--- a/net/android/unittest_support/AndroidManifest.xml
|
||||
+++ b/net/android/unittest_support/AndroidManifest.xml
|
||||
@@ -10,7 +10,7 @@ found in the LICENSE file.
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0">
|
||||
|
||||
- <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
|
||||
+ <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>
|
||||
diff --git a/net/test/android/javatests/AndroidManifest.xml b/net/test/android/javatests/AndroidManifest.xml
|
||||
--- a/net/test/android/javatests/AndroidManifest.xml
|
||||
+++ b/net/test/android/javatests/AndroidManifest.xml
|
||||
@@ -8,7 +8,7 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="org.chromium.net.test.support">
|
||||
|
||||
- <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
|
||||
+ <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
|
||||
diff --git a/remoting/android/java/AndroidManifest.xml.jinja2 b/remoting/android/java/AndroidManifest.xml.jinja2
|
||||
--- a/remoting/android/java/AndroidManifest.xml.jinja2
|
||||
+++ b/remoting/android/java/AndroidManifest.xml.jinja2
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="{{ APK_PACKAGE_NAME }}">
|
||||
- <uses-sdk android:minSdkVersion="19"
|
||||
+ <uses-sdk android:minSdkVersion="14"
|
||||
android:targetSdkVersion="28"/>
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
|
||||
diff --git a/remoting/android/javatests/AndroidManifest.xml.jinja2 b/remoting/android/javatests/AndroidManifest.xml.jinja2
|
||||
--- a/remoting/android/javatests/AndroidManifest.xml.jinja2
|
||||
+++ b/remoting/android/javatests/AndroidManifest.xml.jinja2
|
||||
@@ -11,7 +11,7 @@
|
||||
<!-- We add an application tag here just so that we can indicate that this
|
||||
package needs to link against the android.test library, which is
|
||||
needed when building test cases. -->
|
||||
- <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
|
||||
+ <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" />
|
||||
<uses-permission android:name="android.permission.RUN_INSTRUMENTATION" />
|
||||
<application>
|
||||
<uses-library android:name="android.test.runner" />
|
||||
diff --git a/testing/android/driver/java/AndroidManifest.xml b/testing/android/driver/java/AndroidManifest.xml
|
||||
--- a/testing/android/driver/java/AndroidManifest.xml
|
||||
+++ b/testing/android/driver/java/AndroidManifest.xml
|
||||
@@ -10,7 +10,7 @@ found in the LICENSE file.
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0">
|
||||
|
||||
- <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
|
||||
+ <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
|
||||
<application android:label="OnDeviceInstrumentationDriver" />
|
||||
diff --git a/testing/android/native_test/java/AndroidManifest.xml.jinja2 b/testing/android/native_test/java/AndroidManifest.xml.jinja2
|
||||
--- a/testing/android/native_test/java/AndroidManifest.xml.jinja2
|
||||
+++ b/testing/android/native_test/java/AndroidManifest.xml.jinja2
|
||||
@@ -10,7 +10,7 @@ found in the LICENSE file.
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0">
|
||||
|
||||
- <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
|
||||
+ <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<uses-permission android:name="android.permission.BLUETOOTH"/>
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
|
||||
diff --git a/tools/android/audio_focus_grabber/java/AndroidManifest.xml b/tools/android/audio_focus_grabber/java/AndroidManifest.xml
|
||||
--- a/tools/android/audio_focus_grabber/java/AndroidManifest.xml
|
||||
+++ b/tools/android/audio_focus_grabber/java/AndroidManifest.xml
|
||||
@@ -8,7 +8,7 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.chromium.tools.audio_focus_grabber" >
|
||||
|
||||
- <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
|
||||
+ <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
|
||||
|
||||
<application
|
||||
android:label="@string/app_name" >
|
||||
diff --git a/tools/android/push_apps_to_background/AndroidManifest.xml b/tools/android/push_apps_to_background/AndroidManifest.xml
|
||||
--- a/tools/android/push_apps_to_background/AndroidManifest.xml
|
||||
+++ b/tools/android/push_apps_to_background/AndroidManifest.xml
|
||||
@@ -10,7 +10,7 @@
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0" >
|
||||
|
||||
- <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
|
||||
+ <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
|
||||
|
||||
<application
|
||||
android:icon="@drawable/ic_launcher"
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -52,6 +52,7 @@ Fix-crash-when-accessing-page-info-site-settings.patch
|
||||
openH264-enable-ARM-ARM64-optimizations.patch
|
||||
Switch-to-fstack-protector-strong.patch
|
||||
Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
|
||||
AV1-codec-support.patch
|
||||
Inject-scripts-for-AMP-tracking-ads-and-video-functionality.patch
|
||||
Allow-playing-audio-in-background.patch
|
||||
Add-flag-to-control-video-playback-resume-feature.patch
|
||||
@@ -75,8 +76,7 @@ Add-custom-tab-intents-privacy-option.patch
|
||||
Add-site-settings-option-for-session-only-cookies.patch
|
||||
Always-allow-partner-customisation.patch
|
||||
Change-default-homepage-to-new-tab-page.patch
|
||||
Add-bookmark-import-export-actions-in-bookmarks-activity-and-page.patch
|
||||
Reduce-permissions-needed-for-bookmarks-import-export.patch
|
||||
Add-bookmark-import-export-actions.patch
|
||||
Disable-promos-displayed-in-bookmarks-manager.patch
|
||||
Add-option-to-not-persist-tabs-across-sessions.patch
|
||||
Add-an-always-incognito-mode.patch
|
||||
@@ -107,3 +107,4 @@ Add-flag-to-disable-IPv6-probes.patch
|
||||
Add-a-proxy-configuration-page.patch
|
||||
Do-not-ignore-download-location-prompt-setting.patch
|
||||
Disable-previews-by-default.patch
|
||||
Rollback-android-minSdkVersion-from-19-KitKat-to-16-JellyBean.patch
|
||||
|
||||
Reference in New Issue
Block a user