Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1104)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PwsClient.java

Issue 1552743004: Add a UrlManagerTest (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More of the same Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PwsClient.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PwsClient.java b/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PwsClient.java
index 50029d19efef259f4d3ae43cbd44f3f37aaf7705..1d55fbf2ec7c0b6390003637e282866042639000 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PwsClient.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PwsClient.java
@@ -5,33 +5,17 @@
package org.chromium.chrome.browser.physicalweb;
import android.graphics.Bitmap;
-import android.os.AsyncTask;
-import org.chromium.base.Log;
-import org.chromium.base.ThreadUtils;
-import org.chromium.chrome.GoogleAPIKeys;
-import org.chromium.chrome.browser.ChromeVersionInfo;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.net.MalformedURLException;
-import java.util.ArrayList;
import java.util.Collection;
/**
* This class sends requests to the Physical Web Service.
*/
-class PwsClient {
- private static final String TAG = "PhysicalWeb";
- private static final String ENDPOINT_URL =
- "https://physicalweb.googleapis.com/v1alpha1/urls:resolve";
-
+interface PwsClient {
/**
* Callback that is run after the PWS sends a response to a resolve-scan request.
*/
- public interface ResolveScanCallback {
+ interface ResolveScanCallback {
/**
* Handle newly returned PwsResults.
* @param pwsResults The results returned by the PWS.
@@ -42,7 +26,7 @@ class PwsClient {
/**
* Callback that is run after receiving the response to an icon fetch request.
*/
- public interface FetchIconCallback {
+ interface FetchIconCallback {
/**
* Handle newly returned favicon Bitmaps.
* @param iconUrl The favicon URL.
@@ -51,139 +35,17 @@ class PwsClient {
public void onIconReceived(String iconUrl, Bitmap iconBitmap);
}
- private String getApiKey() {
- if (ChromeVersionInfo.isStableBuild()) {
- return GoogleAPIKeys.GOOGLE_API_KEY;
- } else {
- return GoogleAPIKeys.GOOGLE_API_KEY_PHYSICAL_WEB_TEST;
- }
- }
-
- private static JSONObject createResolveScanPayload(Collection<String> urls)
- throws JSONException {
- // Encode the urls.
- JSONArray objects = new JSONArray();
- for (String url : urls) {
- JSONObject obj = new JSONObject();
- obj.put("url", url);
- objects.put(obj);
- }
-
- // Organize the data into a single object.
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("urls", objects);
- return jsonObject;
- }
-
- private static Collection<PwsResult> parseResolveScanResponse(JSONObject result) {
- // Get the metadata array.
- Collection<PwsResult> pwsResults = new ArrayList<>();
- JSONArray metadata = result.optJSONArray("results");
- if (metadata == null) {
- // There are no valid results.
- return pwsResults;
- }
-
- // Loop through the metadata for each url.
- for (int i = 0; i < metadata.length(); i++) {
- try {
- JSONObject obj = metadata.getJSONObject(i);
- JSONObject pageInfo = obj.getJSONObject("pageInfo");
- String scannedUrl = obj.getString("scannedUrl");
- String resolvedUrl = obj.getString("resolvedUrl");
- String iconUrl = pageInfo.optString("icon", null);
- String title = pageInfo.optString("title", "");
- String description = pageInfo.optString("description", "");
- pwsResults.add(new PwsResult(scannedUrl, resolvedUrl, iconUrl, title, description));
- } catch (JSONException e) {
- Log.e(TAG, "PWS returned invalid data", e);
- continue;
- }
- }
- return pwsResults;
- }
-
/**
* Send an HTTP request to the PWS to resolve a set of URLs.
* @param broadcastUrls The URLs to resolve.
* @param resolveScanCallback The callback to be run when the response is received.
*/
- public void resolve(final Collection<String> broadcastUrls,
- final ResolveScanCallback resolveScanCallback) {
- // Create the response callback.
- JsonObjectHttpRequest.RequestCallback requestCallback =
- new JsonObjectHttpRequest.RequestCallback() {
- @Override
- public void onResponse(JSONObject result) {
- ThreadUtils.assertOnUiThread();
- Collection<PwsResult> pwsResults = parseResolveScanResponse(result);
- resolveScanCallback.onPwsResults(pwsResults);
- }
-
- @Override
- public void onError(int responseCode, Exception e) {
- ThreadUtils.assertOnUiThread();
- String httpErr = "";
- if (responseCode > 0) {
- httpErr = ", HTTP " + responseCode;
- }
- Log.e(TAG, "Error making request to PWS%s", httpErr);
- resolveScanCallback.onPwsResults(new ArrayList<PwsResult>());
- }
- };
-
- // Create the request.
- HttpRequest request = null;
- try {
- JSONObject payload = createResolveScanPayload(broadcastUrls);
- String url = ENDPOINT_URL + "?key=" + getApiKey();
- request = new JsonObjectHttpRequest(url, payload, requestCallback);
- } catch (MalformedURLException e) {
- Log.e(TAG, "Error creating PWS HTTP request", e);
- return;
- } catch (JSONException e) {
- Log.e(TAG, "Error creating PWS JSON payload", e);
- return;
- }
- // The callback will be called on the main thread.
- AsyncTask.THREAD_POOL_EXECUTOR.execute(request);
- }
+ void resolve(Collection<String> broadcastUrls, ResolveScanCallback resolveScanCallback);
/**
* Send an HTTP request to fetch a favicon.
* @param iconUrl The URL of the favicon.
* @param fetchIconCallback The callback to be run when the icon is received.
*/
- public void fetchIcon(final String iconUrl,
- final FetchIconCallback fetchIconCallback) {
- // Create the response callback.
- BitmapHttpRequest.RequestCallback requestCallback =
- new BitmapHttpRequest.RequestCallback() {
- @Override
- public void onResponse(Bitmap iconBitmap) {
- fetchIconCallback.onIconReceived(iconUrl, iconBitmap);
- }
-
- @Override
- public void onError(int responseCode, Exception e) {
- ThreadUtils.assertOnUiThread();
- String httpErr = "";
- if (responseCode > 0) {
- httpErr = ", HTTP " + responseCode;
- }
- Log.e(TAG, "Error requesting icon%s", httpErr);
- }
- };
-
- // Create the request.
- BitmapHttpRequest request = null;
- try {
- request = new BitmapHttpRequest(iconUrl, requestCallback);
- } catch (MalformedURLException e) {
- Log.e(TAG, "Error creating icon request", e);
- return;
- }
- // The callback will be called on the main thread.
- AsyncTask.THREAD_POOL_EXECUTOR.execute(request);
- }
+ void fetchIcon(String iconUrl, FetchIconCallback fetchIconCallback);
}

Powered by Google App Engine
This is Rietveld 408576698