Commit d6bbe40d authored by boliu@chromium.org's avatar boliu@chromium.org

aw: Clean up android webview lint suppressions

Fix a few instances of HashMap to SparseArray in
AwQuotaManagerBridge.java

Pass null locale to String.format, which implies "no
localization is applied".

Pass Locale.ENGLISH toLowerCase as suggested by the
documentation.

Removed some unneeded supressions.

BUG=

Review URL: https://codereview.chromium.org/126453006

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@243781 0039d316-1c4b-4281-b951-d872f2087c98
parent 2c53c8bb
...@@ -4,15 +4,13 @@ ...@@ -4,15 +4,13 @@
package org.chromium.android_webview; package org.chromium.android_webview;
import android.util.SparseArray;
import android.webkit.ValueCallback; import android.webkit.ValueCallback;
import org.chromium.base.CalledByNative; import org.chromium.base.CalledByNative;
import org.chromium.base.JNINamespace; import org.chromium.base.JNINamespace;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import java.util.HashMap;
import java.util.Map;
/** /**
* Bridge between android.webview.WebStorage and native QuotaManager. This object is owned by Java * Bridge between android.webview.WebStorage and native QuotaManager. This object is owned by Java
* AwBrowserContext and the native side is owned by the native AwBrowserContext. * AwBrowserContext and the native side is owned by the native AwBrowserContext.
...@@ -57,16 +55,16 @@ public class AwQuotaManagerBridge { ...@@ -57,16 +55,16 @@ public class AwQuotaManagerBridge {
// The Java callbacks are saved here. An incrementing callback id is generated for each saved // The Java callbacks are saved here. An incrementing callback id is generated for each saved
// callback and is passed to the native side to identify callback. // callback and is passed to the native side to identify callback.
private int mNextId; private int mNextId;
private Map<Integer, ValueCallback<Origins>> mPendingGetOriginCallbacks; private SparseArray<ValueCallback<Origins>> mPendingGetOriginCallbacks;
private Map<Integer, ValueCallback<Long>> mPendingGetQuotaForOriginCallbacks; private SparseArray<ValueCallback<Long>> mPendingGetQuotaForOriginCallbacks;
private Map<Integer, ValueCallback<Long>> mPendingGetUsageForOriginCallbacks; private SparseArray<ValueCallback<Long>> mPendingGetUsageForOriginCallbacks;
private AwQuotaManagerBridge(long nativeAwQuotaManagerBridgeImpl) { private AwQuotaManagerBridge(long nativeAwQuotaManagerBridgeImpl) {
mNativeAwQuotaManagerBridgeImpl = nativeAwQuotaManagerBridgeImpl; mNativeAwQuotaManagerBridgeImpl = nativeAwQuotaManagerBridgeImpl;
mPendingGetOriginCallbacks = mPendingGetOriginCallbacks =
new HashMap<Integer, ValueCallback<Origins>>(); new SparseArray<ValueCallback<Origins>>();
mPendingGetQuotaForOriginCallbacks = new HashMap<Integer, ValueCallback<Long>>(); mPendingGetQuotaForOriginCallbacks = new SparseArray<ValueCallback<Long>>();
mPendingGetUsageForOriginCallbacks = new HashMap<Integer, ValueCallback<Long>>(); mPendingGetUsageForOriginCallbacks = new SparseArray<ValueCallback<Long>>();
nativeInit(mNativeAwQuotaManagerBridgeImpl); nativeInit(mNativeAwQuotaManagerBridgeImpl);
} }
...@@ -106,7 +104,7 @@ public class AwQuotaManagerBridge { ...@@ -106,7 +104,7 @@ public class AwQuotaManagerBridge {
*/ */
public void getOrigins(ValueCallback<Origins> callback) { public void getOrigins(ValueCallback<Origins> callback) {
int callbackId = getNextId(); int callbackId = getNextId();
assert !mPendingGetOriginCallbacks.containsKey(callbackId); assert mPendingGetOriginCallbacks.get(callbackId) == null;
mPendingGetOriginCallbacks.put(callbackId, callback); mPendingGetOriginCallbacks.put(callbackId, callback);
nativeGetOrigins(mNativeAwQuotaManagerBridgeImpl, callbackId); nativeGetOrigins(mNativeAwQuotaManagerBridgeImpl, callbackId);
} }
...@@ -117,7 +115,7 @@ public class AwQuotaManagerBridge { ...@@ -117,7 +115,7 @@ public class AwQuotaManagerBridge {
*/ */
public void getQuotaForOrigin(String origin, ValueCallback<Long> callback) { public void getQuotaForOrigin(String origin, ValueCallback<Long> callback) {
int callbackId = getNextId(); int callbackId = getNextId();
assert !mPendingGetQuotaForOriginCallbacks.containsKey(callbackId); assert mPendingGetQuotaForOriginCallbacks.get(callbackId) == null;
mPendingGetQuotaForOriginCallbacks.put(callbackId, callback); mPendingGetQuotaForOriginCallbacks.put(callbackId, callback);
nativeGetUsageAndQuotaForOrigin(mNativeAwQuotaManagerBridgeImpl, origin, callbackId, true); nativeGetUsageAndQuotaForOrigin(mNativeAwQuotaManagerBridgeImpl, origin, callbackId, true);
} }
...@@ -128,7 +126,7 @@ public class AwQuotaManagerBridge { ...@@ -128,7 +126,7 @@ public class AwQuotaManagerBridge {
*/ */
public void getUsageForOrigin(String origin, ValueCallback<Long> callback) { public void getUsageForOrigin(String origin, ValueCallback<Long> callback) {
int callbackId = getNextId(); int callbackId = getNextId();
assert !mPendingGetUsageForOriginCallbacks.containsKey(callbackId); assert mPendingGetUsageForOriginCallbacks.get(callbackId) == null;
mPendingGetUsageForOriginCallbacks.put(callbackId, callback); mPendingGetUsageForOriginCallbacks.put(callbackId, callback);
nativeGetUsageAndQuotaForOrigin(mNativeAwQuotaManagerBridgeImpl, origin, callbackId, false); nativeGetUsageAndQuotaForOrigin(mNativeAwQuotaManagerBridgeImpl, origin, callbackId, false);
} }
...@@ -136,20 +134,23 @@ public class AwQuotaManagerBridge { ...@@ -136,20 +134,23 @@ public class AwQuotaManagerBridge {
@CalledByNative @CalledByNative
private void onGetOriginsCallback(int callbackId, String[] origin, long[] usages, private void onGetOriginsCallback(int callbackId, String[] origin, long[] usages,
long[] quotas) { long[] quotas) {
assert mPendingGetOriginCallbacks.containsKey(callbackId); assert mPendingGetOriginCallbacks.get(callbackId) != null;
mPendingGetOriginCallbacks.remove(callbackId).onReceiveValue( mPendingGetOriginCallbacks.get(callbackId).onReceiveValue(
new Origins(origin, usages, quotas)); new Origins(origin, usages, quotas));
mPendingGetOriginCallbacks.remove(callbackId);
} }
@CalledByNative @CalledByNative
private void onGetUsageAndQuotaForOriginCallback( private void onGetUsageAndQuotaForOriginCallback(
int callbackId, boolean isQuota, long usage, long quota) { int callbackId, boolean isQuota, long usage, long quota) {
if (isQuota) { if (isQuota) {
assert mPendingGetQuotaForOriginCallbacks.containsKey(callbackId); assert mPendingGetQuotaForOriginCallbacks.get(callbackId) != null;
mPendingGetQuotaForOriginCallbacks.remove(callbackId).onReceiveValue(quota); mPendingGetQuotaForOriginCallbacks.get(callbackId).onReceiveValue(quota);
mPendingGetQuotaForOriginCallbacks.remove(callbackId);
} else { } else {
assert mPendingGetUsageForOriginCallbacks.containsKey(callbackId); assert mPendingGetUsageForOriginCallbacks.get(callbackId) != null;
mPendingGetUsageForOriginCallbacks.remove(callbackId).onReceiveValue(usage); mPendingGetUsageForOriginCallbacks.get(callbackId).onReceiveValue(usage);
mPendingGetUsageForOriginCallbacks.remove(callbackId);
} }
} }
......
...@@ -14,6 +14,11 @@ import org.chromium.content.browser.test.util.Criteria; ...@@ -14,6 +14,11 @@ import org.chromium.content.browser.test.util.Criteria;
import org.chromium.content.browser.test.util.CriteriaHelper; import org.chromium.content.browser.test.util.CriteriaHelper;
import org.chromium.ui.gfx.DeviceDisplayInfo; import org.chromium.ui.gfx.DeviceDisplayInfo;
import java.util.Locale;
/**
* Tests for usage and quirks of viewport related methods.
*/
public class AwViewportTest extends AwTestBase { public class AwViewportTest extends AwTestBase {
@MediumTest @MediumTest
...@@ -29,9 +34,9 @@ public class AwViewportTest extends AwTestBase { ...@@ -29,9 +34,9 @@ public class AwViewportTest extends AwTestBase {
final String pageTemplate = "<html><head>" + final String pageTemplate = "<html><head>" +
"<meta name='viewport' content='width=device-width, target-densityDpi=%s' />" + "<meta name='viewport' content='width=device-width, target-densityDpi=%s' />" +
"</head><body onload='document.title=document.body.clientWidth'></body></html>"; "</head><body onload='document.title=document.body.clientWidth'></body></html>";
final String pageDeviceDpi = String.format(pageTemplate, "device-dpi"); final String pageDeviceDpi = String.format((Locale)null, pageTemplate, "device-dpi");
final String pageHighDpi = String.format(pageTemplate, "high-dpi"); final String pageHighDpi = String.format((Locale)null, pageTemplate, "high-dpi");
final String pageDpi100 = String.format(pageTemplate, "100"); final String pageDpi100 = String.format((Locale)null, pageTemplate, "100");
settings.setJavaScriptEnabled(true); settings.setJavaScriptEnabled(true);
...@@ -178,7 +183,7 @@ public class AwViewportTest extends AwTestBase { ...@@ -178,7 +183,7 @@ public class AwViewportTest extends AwTestBase {
final int pageWidth = 3000; final int pageWidth = 3000;
final float pageScale = 1.0f; final float pageScale = 1.0f;
final String page = String.format("<html><head>" + final String page = String.format((Locale)null, "<html><head>" +
"<meta name='viewport' content='width=%d' />" + "<meta name='viewport' content='width=%d' />" +
"<meta name='viewport' content='initial-scale=%.1f' />" + "<meta name='viewport' content='initial-scale=%.1f' />" +
"<meta name='viewport' content='user-scalable=0' />" + "<meta name='viewport' content='user-scalable=0' />" +
...@@ -209,7 +214,7 @@ public class AwViewportTest extends AwTestBase { ...@@ -209,7 +214,7 @@ public class AwViewportTest extends AwTestBase {
CallbackHelper onPageFinishedHelper = contentClient.getOnPageFinishedHelper(); CallbackHelper onPageFinishedHelper = contentClient.getOnPageFinishedHelper();
final int pageWidth = 3000; final int pageWidth = 3000;
final String page = String.format("<html><head>" + final String page = String.format((Locale)null, "<html><head>" +
"<meta name='viewport' content='width=device-width' />" + "<meta name='viewport' content='width=device-width' />" +
"<meta name='viewport' content='width=%d' />" + "<meta name='viewport' content='width=%d' />" +
"</head><body onload='document.title=document.body.clientWidth'></body></html>", "</head><body onload='document.title=document.body.clientWidth'></body></html>",
...@@ -238,8 +243,8 @@ public class AwViewportTest extends AwTestBase { ...@@ -238,8 +243,8 @@ public class AwViewportTest extends AwTestBase {
"</head><body>" + "</head><body>" +
"<div style='width:10000px;height:200px'>A big div</div>" + "<div style='width:10000px;height:200px'>A big div</div>" +
"</body></html>"; "</body></html>";
final String pageScale4 = String.format(pageTemplate, 4); final String pageScale4 = String.format((Locale)null, pageTemplate, 4);
final String page = String.format(pageTemplate, 1); final String page = String.format((Locale)null, pageTemplate, 1);
// Page scale updates are asynchronous. There is an issue that we can't // Page scale updates are asynchronous. There is an issue that we can't
// reliably check, whether the scale as NOT changed (i.e. remains to be 1.0). // reliably check, whether the scale as NOT changed (i.e. remains to be 1.0).
......
...@@ -22,6 +22,7 @@ import org.chromium.net.test.util.TestWebServer; ...@@ -22,6 +22,7 @@ import org.chromium.net.test.util.TestWebServer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -120,7 +121,7 @@ public class LoadUrlTest extends AwTestBase { ...@@ -120,7 +121,7 @@ public class LoadUrlTest extends AwTestBase {
assertEquals(1, matchingHeaders.length); assertEquals(1, matchingHeaders.length);
Header header = matchingHeaders[0]; Header header = matchingHeaders[0];
assertEquals(refNamesAndValues[i].toLowerCase(), header.getName()); assertEquals(refNamesAndValues[i].toLowerCase(Locale.ENGLISH), header.getName());
assertEquals(refNamesAndValues[i + 1], header.getValue()); assertEquals(refNamesAndValues[i + 1], header.getValue());
} }
} }
...@@ -196,7 +197,8 @@ public class LoadUrlTest extends AwTestBase { ...@@ -196,7 +197,8 @@ public class LoadUrlTest extends AwTestBase {
Header[] matchingHeaders = webServer.getLastRequest(path).getHeaders(extraHeaders[0]); Header[] matchingHeaders = webServer.getLastRequest(path).getHeaders(extraHeaders[0]);
assertEquals(1, matchingHeaders.length); assertEquals(1, matchingHeaders.length);
Header header = matchingHeaders[0]; Header header = matchingHeaders[0];
assertEquals(extraHeaders[0].toLowerCase(), header.getName().toLowerCase()); assertEquals(extraHeaders[0].toLowerCase(Locale.ENGLISH),
header.getName().toLowerCase(Locale.ENGLISH));
// Just check that the value is there, and it's not the one we provided. // Just check that the value is there, and it's not the one we provided.
assertTrue(header.getValue().length() > 0); assertTrue(header.getValue().length() > 0);
assertFalse(extraHeaders[1].equals(header.getValue())); assertFalse(extraHeaders[1].equals(header.getValue()));
......
...@@ -29,8 +29,6 @@ Still reading? ...@@ -29,8 +29,6 @@ Still reading?
</issue> </issue>
<issue id="DefaultLocale"> <issue id="DefaultLocale">
<ignore path="PRODUCT_DIR/content_shell_test_apk/classes/org/chromium/content/browser/ViewportTest.class"/> <ignore path="PRODUCT_DIR/content_shell_test_apk/classes/org/chromium/content/browser/ViewportTest.class"/>
<ignore path="android_webview/javatests/src/org/chromium/android_webview/test/AwViewportTest.java"/>
<ignore path="android_webview/javatests/src/org/chromium/android_webview/test/LoadUrlTest.java"/>
<ignore path="chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java"/> <ignore path="chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java"/>
<ignore path="chrome/android/testshell/javatests/src/org/chromium/chrome/testshell/ChromiumTestShellUrlTest.java"/> <ignore path="chrome/android/testshell/javatests/src/org/chromium/chrome/testshell/ChromiumTestShellUrlTest.java"/>
<ignore path="chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/sync/SyncTestUtil.java"/> <ignore path="chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/sync/SyncTestUtil.java"/>
...@@ -76,7 +74,6 @@ Still reading? ...@@ -76,7 +74,6 @@ Still reading?
<ignore path="AndroidManifest.xml"/> <ignore path="AndroidManifest.xml"/>
</issue> </issue>
<issue id="NewApi"> <issue id="NewApi">
<ignore path="PRODUCT_DIR/android_webview_apk/classes/org/chromium/android_webview/test/AwTestContainerView.class"/>
<ignore path="PRODUCT_DIR/chromium_testshell_test_apk/classes/org/chromium/printing/PrintingControllerTest$6.class"/> <ignore path="PRODUCT_DIR/chromium_testshell_test_apk/classes/org/chromium/printing/PrintingControllerTest$6.class"/>
<ignore path="PRODUCT_DIR/chromium_testshell_test_apk/classes/org/chromium/printing/PrintingControllerTest.class"/> <ignore path="PRODUCT_DIR/chromium_testshell_test_apk/classes/org/chromium/printing/PrintingControllerTest.class"/>
<ignore path="PRODUCT_DIR/content_shell_test_apk/classes/org/chromium/content/browser/ClipboardTest.class"/> <ignore path="PRODUCT_DIR/content_shell_test_apk/classes/org/chromium/content/browser/ClipboardTest.class"/>
...@@ -131,7 +128,6 @@ Still reading? ...@@ -131,7 +128,6 @@ Still reading?
</issue> </issue>
<issue id="SetJavaScriptEnabled" severity="ignore"/> <issue id="SetJavaScriptEnabled" severity="ignore"/>
<issue id="UseSparseArrays"> <issue id="UseSparseArrays">
<ignore path="android_webview/java/src/org/chromium/android_webview/AwQuotaManagerBridge.java"/>
<ignore path="android_webview/java/src/org/chromium/android_webview/AwResource.java"/> <ignore path="android_webview/java/src/org/chromium/android_webview/AwResource.java"/>
<ignore path="remoting/android/java/src/org/chromium/chromoting/TapGestureDetector.java"/> <ignore path="remoting/android/java/src/org/chromium/chromoting/TapGestureDetector.java"/>
<ignore path="ui/android/java/src/org/chromium/ui/base/WindowAndroid.java"/> <ignore path="ui/android/java/src/org/chromium/ui/base/WindowAndroid.java"/>
......
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