Commit 7dad65d9 authored by Peter Wen's avatar Peter Wen Committed by Commit Bot

Android: Create //chrome/lib/{image_fetcher,util}

Follow-up downstream CL: https://crrev.com/i/1309325

Image fetcher has very few dependencies (BitmapCache and
ConversionUtils), so it is a good candidate for the lib/ layer.

Created lib/util to house classes in the util package that can be easily
moved. The rest will be moved later, when their dependencies, including
some resources, are also split out. There may be browser-specific util
classes that remain in browser.util.

TBR +base/android DEPS addition since these libraries being moved
already depend on base.

Tbr: nyquist@chromium.org
Bug: 846440
Change-Id: I9be429ec8789438a34314a3da6a02119f6c3e549
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1614967
Commit-Queue: Peter Wen <wnwen@chromium.org>
Reviewed-by: default avatarTheresa <twellington@chromium.org>
Reviewed-by: default avatarBrandon Wylie <wylieb@chromium.org>
Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Auto-Submit: Peter Wen <wnwen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#668953}
parent 5ec43f60
......@@ -285,7 +285,9 @@ android_library("chrome_java") {
"//chrome/android/webapk/libs/common:common_java",
"//chrome/android/webapk/libs/common:splash_java",
"//chrome/android/webapk/libs/runtime_library:webapk_service_aidl_java",
"//chrome/lib/image_fetcher/public/android:java",
"//chrome/lib/lifecycle/public/android:java",
"//chrome/lib/util/public/android:java",
"//components/autofill/android:autofill_java",
"//components/autofill_assistant/browser:proto_java",
"//components/background_task_scheduler:background_task_scheduler_java",
......@@ -416,7 +418,6 @@ android_library("chrome_java") {
"//components/favicon_base:favicon_base_enums_java",
"//components/dom_distiller/core:distiller_type_java",
"//components/infobars/core:infobar_enums_java",
"//components/image_fetcher/core:java_enums_srcjar",
"//components/ntp_snippets:ntp_snippets_java_enums_srcjar",
"//components/ntp_tiles:ntp_tiles_enums_java",
"//components/offline_pages/core:offline_page_model_enums_java",
......@@ -514,6 +515,8 @@ group("jni_headers") {
"//chrome/android/features/keyboard_accessory:jni_headers",
"//chrome/android/features/media_router:jni_headers",
"//chrome/android/public/profiles:jni_headers",
"//chrome/lib/image_fetcher/public/android:jni_headers",
"//chrome/lib/util/public/android:jni_headers",
]
}
......@@ -772,6 +775,7 @@ android_library("chrome_test_java") {
"//chrome/android/webapk/libs/client:client_java",
"//chrome/android/webapk/libs/common:common_java",
"//chrome/browser/android/metrics:ukm_utils_java",
"//chrome/lib/util/public/android:java",
"//chrome/test/android:chrome_java_test_support",
"//chrome/test/android/test_trusted_web_activity:test_trusted_web_activity_java",
"//components/autofill/android:autofill_java",
......@@ -924,6 +928,7 @@ if (enable_vr || enable_arcore) {
"//chrome/android:chrome_java",
"//chrome/android/features/vr:java",
"//chrome/test/android:chrome_java_test_support",
"//chrome/lib/util/public/android:java",
"//components/policy/android:policy_java",
"//content/public/android:content_java",
"//content/public/test/android:content_java_test_support",
......@@ -2450,7 +2455,6 @@ generate_jni("chrome_jni_headers") {
"java/src/org/chromium/chrome/browser/history/HistoryDeletionBridge.java",
"java/src/org/chromium/chrome/browser/history/HistoryDeletionInfo.java",
"java/src/org/chromium/chrome/browser/historyreport/HistoryReportJniBridge.java",
"java/src/org/chromium/chrome/browser/image_fetcher/ImageFetcherBridge.java",
"java/src/org/chromium/chrome/browser/infobar/AdsBlockedInfoBar.java",
"java/src/org/chromium/chrome/browser/infobar/AutofillCreditCardFillingInfoBar.java",
"java/src/org/chromium/chrome/browser/infobar/AutofillSaveCardInfoBar.java",
......@@ -2605,7 +2609,6 @@ generate_jni("chrome_jni_headers") {
"java/src/org/chromium/chrome/browser/util/ChromeContextUtil.java",
"java/src/org/chromium/chrome/browser/util/FeatureUtilities.java",
"java/src/org/chromium/chrome/browser/util/PlatformUtil.java",
"java/src/org/chromium/chrome/browser/util/UrlUtilities.java",
"java/src/org/chromium/chrome/browser/webapps/AddToHomescreenManager.java",
"java/src/org/chromium/chrome/browser/webapps/WebApkInstallService.java",
"java/src/org/chromium/chrome/browser/webapps/WebApkInstaller.java",
......
include_rules = [
"+chrome/lib/util/public",
"+components/content_capture",
"+components/download",
"+components/favicon_base",
......
......@@ -733,12 +733,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/identity/UniqueIdentificationGenerator.java",
"java/src/org/chromium/chrome/browser/identity/UniqueIdentificationGeneratorFactory.java",
"java/src/org/chromium/chrome/browser/identity/UuidBasedUniqueIdentificationGenerator.java",
"java/src/org/chromium/chrome/browser/image_fetcher/CachedImageFetcher.java",
"java/src/org/chromium/chrome/browser/image_fetcher/ImageFetcherBridge.java",
"java/src/org/chromium/chrome/browser/image_fetcher/ImageFetcherFactory.java",
"java/src/org/chromium/chrome/browser/image_fetcher/ImageFetcher.java",
"java/src/org/chromium/chrome/browser/image_fetcher/InMemoryCachedImageFetcher.java",
"java/src/org/chromium/chrome/browser/image_fetcher/NetworkImageFetcher.java",
"java/src/org/chromium/chrome/browser/incognito/IncognitoDisclosureActivity.java",
"java/src/org/chromium/chrome/browser/incognito/IncognitoNotificationManager.java",
"java/src/org/chromium/chrome/browser/incognito/IncognitoNotificationService.java",
......@@ -1643,20 +1637,11 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java",
"java/src/org/chromium/chrome/browser/ui/system/StatusBarColorController.java",
"java/src/org/chromium/chrome/browser/util/AccessibilityUtil.java",
"java/src/org/chromium/chrome/browser/util/BitmapCache.java",
"java/src/org/chromium/chrome/browser/util/ChromeContextUtil.java",
"java/src/org/chromium/chrome/browser/util/ChromeFileProvider.java",
"java/src/org/chromium/chrome/browser/util/ColorUtils.java",
"java/src/org/chromium/chrome/browser/util/ConversionUtils.java",
"java/src/org/chromium/chrome/browser/util/FeatureUtilities.java",
"java/src/org/chromium/chrome/browser/util/FileSizeUtil.java",
"java/src/org/chromium/chrome/browser/util/HashUtil.java",
"java/src/org/chromium/chrome/browser/util/IntentUtils.java",
"java/src/org/chromium/chrome/browser/util/KeyNavigationUtil.java",
"java/src/org/chromium/chrome/browser/util/MathUtils.java",
"java/src/org/chromium/chrome/browser/util/PlatformUtil.java",
"java/src/org/chromium/chrome/browser/util/UrlConstants.java",
"java/src/org/chromium/chrome/browser/util/UrlUtilities.java",
"java/src/org/chromium/chrome/browser/util/ViewUtils.java",
"java/src/org/chromium/chrome/browser/vr/ArDelegate.java",
"java/src/org/chromium/chrome/browser/vr/ArDelegateProvider.java",
......
......@@ -168,6 +168,7 @@ android_library("test_java") {
"//base:base_java_test_support",
"//chrome/android:chrome_java",
"//chrome/android:chrome_test_util_java",
"//chrome/lib/image_fetcher/public/android:java",
"//content/public/android:content_java",
"//content/public/test/android:content_java_test_support",
"//net/android:net_java_test_support",
......
......@@ -7,7 +7,7 @@ specific_include_rules = {
'Tab\.java': [
"+chrome/android/java/src/org/chromium/chrome/browser/night_mode",
"+chrome/android/java/src/org/chromium/chrome/browser/tab",
"+chrome/android/java/src/org/chromium/chrome/browser/util",
"+chrome/lib/util/public",
"-components",
"+components/embedder_support/android/java/src/org/chromium/components/embedder_support/view",
"+components/navigation_interception/android/java/src/org/chromium/components/navigation_interception",
......
......@@ -21,9 +21,9 @@ import org.robolectric.shadows.ShadowLooper;
import org.chromium.base.task.test.ShadowPostTask;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.chrome.browser.ActivityTabProvider;
import org.chromium.chrome.browser.UrlConstants;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabObserver;
import org.chromium.chrome.browser.util.UrlConstants;
import org.chromium.chrome.browser.util.test.ShadowUrlUtilities;
import org.chromium.ui.modelutil.PropertyModel;
......
noparent = True
include_rules = [
"+base/android",
"-content/public/android",
"+content/public/android/java/src/org/chromium/content_public",
# Targets under chrome/lib should generally be independent from browser code.
"-chrome/android",
"-chrome/browser",
# Each directory should only cross-depend on public dirs.
# e.g. +chrome/lib/<name>/public for each feature they depend on.
"-chrome/lib",
]
include_rules = [
# TODO(crbug/973821): Temporary until profiles is moved to chrome/lib.
"+chrome/android/public/profiles",
"+chrome/lib/util/public",
]
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/android/rules.gni")
android_library("java") {
deps = [
"//base:base_java",
"//chrome/android/public/profiles:java",
"//chrome/lib/util/public/android:java",
"//content/public/android:content_java",
"//third_party/gif_player:gif_player_java",
]
java_files = [
"java/src/org/chromium/chrome/browser/image_fetcher/CachedImageFetcher.java",
"java/src/org/chromium/chrome/browser/image_fetcher/ImageFetcherBridge.java",
"java/src/org/chromium/chrome/browser/image_fetcher/ImageFetcherFactory.java",
"java/src/org/chromium/chrome/browser/image_fetcher/ImageFetcher.java",
"java/src/org/chromium/chrome/browser/image_fetcher/InMemoryCachedImageFetcher.java",
"java/src/org/chromium/chrome/browser/image_fetcher/NetworkImageFetcher.java",
]
srcjar_deps = [ "//components/image_fetcher/core:java_enums_srcjar" ]
}
generate_jni("jni_headers") {
sources = [
"java/src/org/chromium/chrome/browser/image_fetcher/ImageFetcherBridge.java",
]
jni_package = "chrome"
}
mdjones@chromium.org
twellington@chromium.org
# TEAM: chrome-android-app@chromium.org
# COMPONENT: UI>Browser>Mobile
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/android/rules.gni")
android_library("java") {
deps = [
"//base:base_java",
"//content/public/android:content_java",
"//third_party/android_deps:com_android_support_support_compat_java",
"//third_party/android_deps:com_android_support_support_core_utils_java",
]
java_files = [
"java/src/org/chromium/chrome/browser/util/BitmapCache.java",
"java/src/org/chromium/chrome/browser/util/ConversionUtils.java",
"java/src/org/chromium/chrome/browser/util/FileSizeUtil.java",
"java/src/org/chromium/chrome/browser/util/KeyNavigationUtil.java",
"java/src/org/chromium/chrome/browser/util/MathUtils.java",
"java/src/org/chromium/chrome/browser/util/ChromeFileProvider.java",
"java/src/org/chromium/chrome/browser/util/UrlConstants.java",
"java/src/org/chromium/chrome/browser/util/UrlUtilities.java",
"java/src/org/chromium/chrome/browser/util/HashUtil.java",
]
}
generate_jni("jni_headers") {
sources = [
"java/src/org/chromium/chrome/browser/util/UrlUtilities.java",
]
jni_package = "chrome"
}
......@@ -14,7 +14,6 @@ import org.chromium.base.DiscardableReferencePool;
import org.chromium.base.SysUtils;
import org.chromium.base.ThreadUtils;
import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.browser.ChromeApplication;
import java.lang.ref.WeakReference;
import java.util.HashMap;
......@@ -82,8 +81,8 @@ public class BitmapCache {
*
* This constructor must be called on UI thread.
*
* @param referencePool The discardable reference pool. See
* {@link ChromeApplication#getReferencePool}.
* @param referencePool The discardable reference pool. Typically this should be the
* {@link DiscardableReferencePool} for the application.
* @param size The capacity of the cache in bytes.
*/
public BitmapCache(DiscardableReferencePool referencePool, int size) {
......
......@@ -18,8 +18,7 @@ import java.util.Formatter;
public final class HashUtil {
private static final String TAG = "HashUtil";
private HashUtil() {
}
private HashUtil() {}
public static class Params {
private final String mText;
......
......@@ -10,12 +10,10 @@ import android.view.KeyEvent;
* This is a helper class to handle navigation related checks for key events.
*/
public class KeyNavigationUtil {
/**
* This is a helper class with no instance.
*/
private KeyNavigationUtil() {
}
private KeyNavigationUtil() {}
/**
* Checks whether the given event is any of DPAD down or NUMPAD down.
......@@ -23,8 +21,10 @@ public class KeyNavigationUtil {
* @return Whether the event should be processed as a navigation down.
*/
public static boolean isGoDown(KeyEvent event) {
return isActionDown(event) && (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_DOWN
|| (!event.isNumLockOn() && event.getKeyCode() == KeyEvent.KEYCODE_NUMPAD_2));
return isActionDown(event)
&& (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_DOWN
|| (!event.isNumLockOn()
&& event.getKeyCode() == KeyEvent.KEYCODE_NUMPAD_2));
}
/**
......@@ -33,8 +33,10 @@ public class KeyNavigationUtil {
* @return Whether the event should be processed as a navigation up.
*/
public static boolean isGoUp(KeyEvent event) {
return isActionDown(event) && (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_UP
|| (!event.isNumLockOn() && event.getKeyCode() == KeyEvent.KEYCODE_NUMPAD_8));
return isActionDown(event)
&& (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_UP
|| (!event.isNumLockOn()
&& event.getKeyCode() == KeyEvent.KEYCODE_NUMPAD_8));
}
/**
......@@ -43,8 +45,10 @@ public class KeyNavigationUtil {
* @return Whether the event should be processed as a navigation right.
*/
public static boolean isGoRight(KeyEvent event) {
return isActionDown(event) && (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_RIGHT
|| (!event.isNumLockOn() && event.getKeyCode() == KeyEvent.KEYCODE_NUMPAD_6));
return isActionDown(event)
&& (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_RIGHT
|| (!event.isNumLockOn()
&& event.getKeyCode() == KeyEvent.KEYCODE_NUMPAD_6));
}
/**
......@@ -62,8 +66,9 @@ public class KeyNavigationUtil {
* @return Whether the event should be processed as ENTER.
*/
public static boolean isEnter(KeyEvent event) {
return isActionUp(event) && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER
|| event.getKeyCode() == KeyEvent.KEYCODE_NUMPAD_ENTER);
return isActionUp(event)
&& (event.getKeyCode() == KeyEvent.KEYCODE_ENTER
|| event.getKeyCode() == KeyEvent.KEYCODE_NUMPAD_ENTER);
}
/**
......
......@@ -8,7 +8,6 @@ package org.chromium.chrome.browser.util;
* Contains various math utilities used throughout Chrome Mobile.
*/
public class MathUtils {
/** A minimum difference to use when comparing floats for equality. */
public static final float EPSILON = 0.001f;
......@@ -116,16 +115,14 @@ public class MathUtils {
* @param targetHeight The target height
* @return The scale factor applied to dimensions
*/
public static float scaleToFitTargetSize(
int [] dimensions, int targetWidth, int targetHeight) {
public static float scaleToFitTargetSize(int[] dimensions, int targetWidth, int targetHeight) {
if (dimensions.length < 2 || dimensions[0] <= 0 || dimensions[1] <= 0) {
throw new IllegalArgumentException(
"Expected dimensions to have length >= 2 && dimensions[0] > 0 && "
+ "dimensions[1] > 0");
}
float scale = Math.max(
(float) targetWidth / dimensions[0],
(float) targetHeight / dimensions[1]);
float scale =
Math.max((float) targetWidth / dimensions[0], (float) targetHeight / dimensions[1]);
dimensions[0] = (int) (dimensions[0] * scale);
dimensions[1] = (int) (dimensions[1] * scale);
return scale;
......
......@@ -40,14 +40,10 @@ public class UrlUtilities {
ContentUrlConstants.ABOUT_SCHEME);
// Patterns used in validateIntentUrl.
private static final Pattern DNS_HOSTNAME_PATTERN =
Pattern.compile("^[\\w\\.-]*$");
private static final Pattern JAVA_PACKAGE_NAME_PATTERN =
Pattern.compile("^[\\w\\.-]*$");
private static final Pattern ANDROID_COMPONENT_NAME_PATTERN =
Pattern.compile("^[\\w\\./-]*$");
private static final Pattern URL_SCHEME_PATTERN =
Pattern.compile("^[a-zA-Z]+$");
private static final Pattern DNS_HOSTNAME_PATTERN = Pattern.compile("^[\\w\\.-]*$");
private static final Pattern JAVA_PACKAGE_NAME_PATTERN = Pattern.compile("^[\\w\\.-]*$");
private static final Pattern ANDROID_COMPONENT_NAME_PATTERN = Pattern.compile("^[\\w\\./-]*$");
private static final Pattern URL_SCHEME_PATTERN = Pattern.compile("^[a-zA-Z]+$");
private static final String TEL_URL_PREFIX = "tel:";
......@@ -144,8 +140,8 @@ public class UrlUtilities {
* @param includePrivateRegistries Whether or not to consider private registries.
* @return True iff the two URIs belong to the same domain or host.
*/
public static boolean sameDomainOrHost(String primaryUrl, String secondaryUrl,
boolean includePrivateRegistries) {
public static boolean sameDomainOrHost(
String primaryUrl, String secondaryUrl, boolean includePrivateRegistries) {
return nativeSameDomainOrHost(primaryUrl, secondaryUrl, includePrivateRegistries);
}
......@@ -266,8 +262,7 @@ public class UrlUtilities {
// Now lex and parse the correctly-encoded fragment.
String[] parts = fragment.split(";");
if (parts.length < 3
|| !parts[0].equals("Intent")
if (parts.length < 3 || !parts[0].equals("Intent")
|| !parts[parts.length - 1].equals("end")) {
Log.d(TAG, "Invalid fragment (not enough parts, lacking Intent, or lacking end)");
return false;
......@@ -363,10 +358,10 @@ public class UrlUtilities {
private static native boolean nativeIsDownloadable(String url);
private static native boolean nativeIsValidForIntentFallbackNavigation(String url);
private static native boolean nativeIsAcceptedScheme(String url);
private static native boolean nativeSameDomainOrHost(String primaryUrl, String secondaryUrl,
boolean includePrivateRegistries);
private static native String nativeGetDomainAndRegistry(String url,
boolean includePrivateRegistries);
private static native boolean nativeSameDomainOrHost(
String primaryUrl, String secondaryUrl, boolean includePrivateRegistries);
private static native String nativeGetDomainAndRegistry(
String url, boolean includePrivateRegistries);
/** Returns whether the given URL uses the Google.com domain. */
public static native boolean nativeIsGoogleDomainUrl(String url, boolean allowNonStandardPort);
/** Returns whether the given URL is a Google.com domain or sub-domain. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment