Remove all our old high priority knowledge since WebCore will manage it.
Also removed an unused variable in RequestQueue.java.
This commit is contained in:
@@ -67,9 +67,6 @@ class Request {
|
||||
/** Set if I'm using a proxy server */
|
||||
HttpHost mProxyHost;
|
||||
|
||||
/** True if request is .html, .js, .css */
|
||||
boolean mHighPriority;
|
||||
|
||||
/** True if request has been cancelled */
|
||||
volatile boolean mCancelled = false;
|
||||
|
||||
@@ -102,17 +99,15 @@ class Request {
|
||||
* @param eventHandler request will make progress callbacks on
|
||||
* this interface
|
||||
* @param headers reqeust headers
|
||||
* @param highPriority true for .html, css, .cs
|
||||
*/
|
||||
Request(String method, HttpHost host, HttpHost proxyHost, String path,
|
||||
InputStream bodyProvider, int bodyLength,
|
||||
EventHandler eventHandler,
|
||||
Map<String, String> headers, boolean highPriority) {
|
||||
Map<String, String> headers) {
|
||||
mEventHandler = eventHandler;
|
||||
mHost = host;
|
||||
mProxyHost = proxyHost;
|
||||
mPath = path;
|
||||
mHighPriority = highPriority;
|
||||
mBodyProvider = bodyProvider;
|
||||
mBodyLength = bodyLength;
|
||||
|
||||
@@ -356,7 +351,7 @@ class Request {
|
||||
* for debugging
|
||||
*/
|
||||
public String toString() {
|
||||
return (mHighPriority ? "P*" : "") + mPath;
|
||||
return mPath;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -419,6 +419,6 @@ public class RequestHandle {
|
||||
mRequest = mRequestQueue.queueRequest(
|
||||
mUrl, mUri, mMethod, mHeaders, mRequest.mEventHandler,
|
||||
mBodyProvider,
|
||||
mBodyLength, mRequest.mHighPriority).mRequest;
|
||||
mBodyLength).mRequest;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,47 +52,10 @@ public class RequestQueue implements RequestFeeder {
|
||||
|
||||
private Context mContext;
|
||||
|
||||
private static class RequestSet {
|
||||
private final LinkedList<Request> mHighPriority;
|
||||
private final LinkedList<Request> mLowPriority;
|
||||
|
||||
RequestSet() {
|
||||
mHighPriority = new LinkedList<Request>();
|
||||
mLowPriority = new LinkedList<Request>();
|
||||
}
|
||||
|
||||
void add(Request req, boolean head) {
|
||||
LinkedList l = mLowPriority;
|
||||
if (req.mHighPriority) {
|
||||
l = mHighPriority;
|
||||
}
|
||||
if (head) {
|
||||
l.addFirst(req);
|
||||
} else {
|
||||
l.add(req);
|
||||
}
|
||||
}
|
||||
|
||||
Request removeFirst() {
|
||||
if (!mHighPriority.isEmpty()) {
|
||||
return mHighPriority.removeFirst();
|
||||
} else if (!mLowPriority.isEmpty()) {
|
||||
return mLowPriority.removeFirst();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
boolean isEmpty() {
|
||||
return mHighPriority.isEmpty() && mLowPriority.isEmpty();
|
||||
}
|
||||
};
|
||||
/**
|
||||
* Requests, indexed by HttpHost (scheme, host, port)
|
||||
*/
|
||||
private LinkedHashMap<HttpHost, RequestSet> mPending;
|
||||
|
||||
/* Support for notifying a client when queue is empty */
|
||||
private boolean mClientWaiting = false;
|
||||
private LinkedHashMap<HttpHost, LinkedList<Request>> mPending;
|
||||
|
||||
/** true if connected */
|
||||
boolean mNetworkConnected = true;
|
||||
@@ -382,7 +345,7 @@ public class RequestQueue implements RequestFeeder {
|
||||
public RequestQueue(Context context, int connectionCount) {
|
||||
mContext = context;
|
||||
|
||||
mPending = new LinkedHashMap<HttpHost, RequestSet>(32);
|
||||
mPending = new LinkedHashMap<HttpHost, LinkedList<Request>>(32);
|
||||
|
||||
mActivePool = new ActivePool(connectionCount);
|
||||
mActivePool.startup();
|
||||
@@ -472,16 +435,14 @@ public class RequestQueue implements RequestFeeder {
|
||||
* data. Callbacks will be made on the supplied instance.
|
||||
* @param bodyProvider InputStream providing HTTP body, null if none
|
||||
* @param bodyLength length of body, must be 0 if bodyProvider is null
|
||||
* @param highPriority If true, queues before low priority
|
||||
* requests if possible
|
||||
*/
|
||||
public RequestHandle queueRequest(
|
||||
String url, String method,
|
||||
Map<String, String> headers, EventHandler eventHandler,
|
||||
InputStream bodyProvider, int bodyLength, boolean highPriority) {
|
||||
InputStream bodyProvider, int bodyLength) {
|
||||
WebAddress uri = new WebAddress(url);
|
||||
return queueRequest(url, uri, method, headers, eventHandler,
|
||||
bodyProvider, bodyLength, highPriority);
|
||||
bodyProvider, bodyLength);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -494,14 +455,11 @@ public class RequestQueue implements RequestFeeder {
|
||||
* data. Callbacks will be made on the supplied instance.
|
||||
* @param bodyProvider InputStream providing HTTP body, null if none
|
||||
* @param bodyLength length of body, must be 0 if bodyProvider is null
|
||||
* @param highPriority If true, queues before low priority
|
||||
* requests if possible
|
||||
*/
|
||||
public RequestHandle queueRequest(
|
||||
String url, WebAddress uri, String method, Map<String, String> headers,
|
||||
EventHandler eventHandler,
|
||||
InputStream bodyProvider, int bodyLength,
|
||||
boolean highPriority) {
|
||||
InputStream bodyProvider, int bodyLength) {
|
||||
|
||||
if (HttpLog.LOGV) HttpLog.v("RequestQueue.queueRequest " + uri);
|
||||
|
||||
@@ -516,7 +474,7 @@ public class RequestQueue implements RequestFeeder {
|
||||
|
||||
// set up request
|
||||
req = new Request(method, httpHost, mProxyHost, uri.mPath, bodyProvider,
|
||||
bodyLength, eventHandler, headers, highPriority);
|
||||
bodyLength, eventHandler, headers);
|
||||
|
||||
queueRequest(req, false);
|
||||
|
||||
@@ -558,24 +516,19 @@ public class RequestQueue implements RequestFeeder {
|
||||
HttpLog.v("dump()");
|
||||
StringBuilder dump = new StringBuilder();
|
||||
int count = 0;
|
||||
Iterator<Map.Entry<HttpHost, RequestSet>> iter;
|
||||
Iterator<Map.Entry<HttpHost, LinkedList<Request>>> iter;
|
||||
|
||||
// mActivePool.log(dump);
|
||||
|
||||
if (!mPending.isEmpty()) {
|
||||
iter = mPending.entrySet().iterator();
|
||||
while (iter.hasNext()) {
|
||||
Map.Entry<HttpHost, RequestSet> entry = iter.next();
|
||||
Map.Entry<HttpHost, LinkedList<Request>> entry = iter.next();
|
||||
String hostName = entry.getKey().getHostName();
|
||||
StringBuilder line = new StringBuilder("p" + count++ + " " + hostName + " ");
|
||||
|
||||
RequestSet reqList = entry.getValue();
|
||||
ListIterator reqIter = reqList.mHighPriority.listIterator(0);
|
||||
while (iter.hasNext()) {
|
||||
Request request = (Request)iter.next();
|
||||
line.append(request + " ");
|
||||
}
|
||||
reqIter = reqList.mLowPriority.listIterator(0);
|
||||
LinkedList<Request> reqList = entry.getValue();
|
||||
ListIterator reqIter = reqList.listIterator(0);
|
||||
while (iter.hasNext()) {
|
||||
Request request = (Request)iter.next();
|
||||
line.append(request + " ");
|
||||
@@ -607,9 +560,10 @@ public class RequestQueue implements RequestFeeder {
|
||||
Request ret = null;
|
||||
|
||||
if (mNetworkConnected && mPending.containsKey(host)) {
|
||||
RequestSet reqList = mPending.get(host);
|
||||
ret = reqList.removeFirst();
|
||||
if (reqList.isEmpty()) {
|
||||
LinkedList<Request> reqList = mPending.get(host);
|
||||
if (!reqList.isEmpty()) {
|
||||
ret = reqList.removeFirst();
|
||||
} else {
|
||||
mPending.remove(host);
|
||||
}
|
||||
}
|
||||
@@ -640,14 +594,18 @@ public class RequestQueue implements RequestFeeder {
|
||||
|
||||
protected synchronized void queueRequest(Request request, boolean head) {
|
||||
HttpHost host = request.mProxyHost == null ? request.mHost : request.mProxyHost;
|
||||
RequestSet reqList;
|
||||
LinkedList<Request> reqList;
|
||||
if (mPending.containsKey(host)) {
|
||||
reqList = mPending.get(host);
|
||||
} else {
|
||||
reqList = new RequestSet();
|
||||
reqList = new LinkedList<Request>();
|
||||
mPending.put(host, reqList);
|
||||
}
|
||||
reqList.add(request, head);
|
||||
if (head) {
|
||||
reqList.addFirst(request);
|
||||
} else {
|
||||
reqList.add(request);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -660,14 +618,15 @@ public class RequestQueue implements RequestFeeder {
|
||||
}
|
||||
|
||||
/* helper */
|
||||
private Request removeFirst(LinkedHashMap<HttpHost, RequestSet> requestQueue) {
|
||||
private Request removeFirst(LinkedHashMap<HttpHost, LinkedList<Request>> requestQueue) {
|
||||
Request ret = null;
|
||||
Iterator<Map.Entry<HttpHost, RequestSet>> iter = requestQueue.entrySet().iterator();
|
||||
Iterator<Map.Entry<HttpHost, LinkedList<Request>>> iter = requestQueue.entrySet().iterator();
|
||||
if (iter.hasNext()) {
|
||||
Map.Entry<HttpHost, RequestSet> entry = iter.next();
|
||||
RequestSet reqList = entry.getValue();
|
||||
ret = reqList.removeFirst();
|
||||
if (reqList.isEmpty()) {
|
||||
Map.Entry<HttpHost, LinkedList<Request>> entry = iter.next();
|
||||
LinkedList<Request> reqList = entry.getValue();
|
||||
if (!reqList.isEmpty()) {
|
||||
ret = reqList.removeFirst();
|
||||
} else {
|
||||
requestQueue.remove(entry.getKey());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -465,8 +465,6 @@ class BrowserFrame extends Handler {
|
||||
* @param postData If the method is "POST" postData is sent as the request
|
||||
* body. Is null when empty.
|
||||
* @param cacheMode The cache mode to use when loading this resource.
|
||||
* @param isHighPriority True if this resource needs to be put at the front
|
||||
* of the network queue.
|
||||
* @param synchronous True if the load is synchronous.
|
||||
* @return A newly created LoadListener object.
|
||||
*/
|
||||
@@ -476,7 +474,6 @@ class BrowserFrame extends Handler {
|
||||
HashMap headers,
|
||||
byte[] postData,
|
||||
int cacheMode,
|
||||
boolean isHighPriority,
|
||||
boolean synchronous) {
|
||||
PerfChecker checker = new PerfChecker();
|
||||
|
||||
@@ -542,8 +539,8 @@ class BrowserFrame extends Handler {
|
||||
|
||||
if (DebugFlags.BROWSER_FRAME) {
|
||||
Log.v(LOGTAG, "startLoadingResource: url=" + url + ", method="
|
||||
+ method + ", postData=" + postData + ", isHighPriority="
|
||||
+ isHighPriority + ", isMainFramePage=" + isMainFramePage);
|
||||
+ method + ", postData=" + postData + ", isMainFramePage="
|
||||
+ isMainFramePage);
|
||||
}
|
||||
|
||||
// Create a LoadListener
|
||||
@@ -568,8 +565,7 @@ class BrowserFrame extends Handler {
|
||||
CacheManager.endCacheTransaction();
|
||||
}
|
||||
|
||||
FrameLoader loader = new FrameLoader(loadListener, mSettings,
|
||||
method, isHighPriority);
|
||||
FrameLoader loader = new FrameLoader(loadListener, mSettings, method);
|
||||
loader.setHeaders(headers);
|
||||
loader.setPostData(postData);
|
||||
// Set the load mode to the mode used for the current page.
|
||||
|
||||
@@ -28,7 +28,6 @@ class FrameLoader {
|
||||
|
||||
private final LoadListener mListener;
|
||||
private final String mMethod;
|
||||
private final boolean mIsHighPriority;
|
||||
private final WebSettings mSettings;
|
||||
private Map<String, String> mHeaders;
|
||||
private byte[] mPostData;
|
||||
@@ -52,11 +51,10 @@ class FrameLoader {
|
||||
private static final String LOGTAG = "webkit";
|
||||
|
||||
FrameLoader(LoadListener listener, WebSettings settings,
|
||||
String method, boolean highPriority) {
|
||||
String method) {
|
||||
mListener = listener;
|
||||
mHeaders = null;
|
||||
mMethod = method;
|
||||
mIsHighPriority = highPriority;
|
||||
mCacheMode = WebSettings.LOAD_NORMAL;
|
||||
mSettings = settings;
|
||||
}
|
||||
@@ -175,8 +173,7 @@ class FrameLoader {
|
||||
// as response from the cache could be a redirect
|
||||
// and we may need to initiate a network request if the cache
|
||||
// can't satisfy redirect URL
|
||||
mListener.setRequestData(mMethod, mHeaders, mPostData,
|
||||
mIsHighPriority);
|
||||
mListener.setRequestData(mMethod, mHeaders, mPostData);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -190,7 +187,7 @@ class FrameLoader {
|
||||
|
||||
try {
|
||||
ret = mNetwork.requestURL(mMethod, mHeaders,
|
||||
mPostData, mListener, mIsHighPriority);
|
||||
mPostData, mListener);
|
||||
} catch (android.net.ParseException ex) {
|
||||
error = EventHandler.ERROR_BAD_URL;
|
||||
} catch (java.lang.RuntimeException ex) {
|
||||
|
||||
@@ -104,7 +104,6 @@ class LoadListener extends Handler implements EventHandler {
|
||||
private String mMethod;
|
||||
private Map<String, String> mRequestHeaders;
|
||||
private byte[] mPostData;
|
||||
private boolean mIsHighPriority;
|
||||
// Flag to indicate that this load is synchronous.
|
||||
private boolean mSynchronous;
|
||||
private Vector<Message> mMessageQueue;
|
||||
@@ -775,14 +774,12 @@ class LoadListener extends Handler implements EventHandler {
|
||||
* @param method
|
||||
* @param headers
|
||||
* @param postData
|
||||
* @param isHighPriority
|
||||
*/
|
||||
void setRequestData(String method, Map<String, String> headers,
|
||||
byte[] postData, boolean isHighPriority) {
|
||||
byte[] postData) {
|
||||
mMethod = method;
|
||||
mRequestHeaders = headers;
|
||||
mPostData = postData;
|
||||
mIsHighPriority = isHighPriority;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1178,7 +1175,7 @@ class LoadListener extends Handler implements EventHandler {
|
||||
// Network.requestURL.
|
||||
Network network = Network.getInstance(getContext());
|
||||
if (!network.requestURL(mMethod, mRequestHeaders,
|
||||
mPostData, this, mIsHighPriority)) {
|
||||
mPostData, this)) {
|
||||
// Signal a bad url error if we could not load the
|
||||
// redirection.
|
||||
handleError(EventHandler.ERROR_BAD_URL,
|
||||
|
||||
@@ -149,14 +149,12 @@ class Network {
|
||||
* @param headers The http headers.
|
||||
* @param postData The body of the request.
|
||||
* @param loader A LoadListener for receiving the results of the request.
|
||||
* @param isHighPriority True if this is high priority request.
|
||||
* @return True if the request was successfully queued.
|
||||
*/
|
||||
public boolean requestURL(String method,
|
||||
Map<String, String> headers,
|
||||
byte [] postData,
|
||||
LoadListener loader,
|
||||
boolean isHighPriority) {
|
||||
LoadListener loader) {
|
||||
|
||||
String url = loader.url();
|
||||
|
||||
@@ -188,7 +186,7 @@ class Network {
|
||||
|
||||
RequestHandle handle = q.queueRequest(
|
||||
url, loader.getWebAddress(), method, headers, loader,
|
||||
bodyProvider, bodyLength, isHighPriority);
|
||||
bodyProvider, bodyLength);
|
||||
loader.attachRequestHandle(handle);
|
||||
|
||||
if (loader.isSynchronous()) {
|
||||
|
||||
@@ -72,7 +72,7 @@ public class RequestAPITest extends AndroidTestCase implements HttpConstants {
|
||||
RequestHandle handle =
|
||||
mRequestQueue.queueRequest(
|
||||
"http://localhost:8080/test1", "GET", headers, null,
|
||||
null, 0, false);
|
||||
null, 0);
|
||||
|
||||
handle.waitUntilComplete();
|
||||
fail("expected exception not thrown");
|
||||
@@ -121,7 +121,7 @@ public class RequestAPITest extends AndroidTestCase implements HttpConstants {
|
||||
mTestWebServer.setKeepAlive(false);
|
||||
RequestHandle handle = mRequestQueue.queueRequest(
|
||||
"http://localhost:8080/test1", "GET", headers, null,
|
||||
null, 0, false);
|
||||
null, 0);
|
||||
handle.waitUntilComplete();
|
||||
}
|
||||
|
||||
@@ -197,7 +197,7 @@ public class RequestAPITest extends AndroidTestCase implements HttpConstants {
|
||||
|
||||
RequestHandle handle = mRequestQueue.queueRequest(
|
||||
"http://localhost:8080/test1", "GET", null, testEventHandler,
|
||||
null, 0, false);
|
||||
null, 0);
|
||||
|
||||
Log.d(LOGTAG, "testGet - sent request. Waiting");
|
||||
handle.waitUntilComplete();
|
||||
@@ -231,11 +231,11 @@ public class RequestAPITest extends AndroidTestCase implements HttpConstants {
|
||||
|
||||
RequestHandle handle0 = mRequestQueue.queueRequest(
|
||||
"http://localhost:8080/test1", "GET", null, testEventHandler,
|
||||
null, 0, false);
|
||||
null, 0);
|
||||
handle0.waitUntilComplete();
|
||||
RequestHandle handle1 = mRequestQueue.queueRequest(
|
||||
"http://localhost:8080/test1", "GET", null, testEventHandler2,
|
||||
null, 0, false);
|
||||
null, 0);
|
||||
handle1.waitUntilComplete();
|
||||
|
||||
/* It's not correct to use same listener for multiple
|
||||
@@ -270,7 +270,7 @@ public class RequestAPITest extends AndroidTestCase implements HttpConstants {
|
||||
|
||||
RequestHandle handle = mRequestQueue.queueRequest(
|
||||
"http://localhost:8080/test1", "HEAD", null, testEventHandler,
|
||||
null, 0, false);
|
||||
null, 0);
|
||||
|
||||
Log.d(LOGTAG, "testHead - sent request waiting");
|
||||
handle.waitUntilComplete();
|
||||
@@ -297,7 +297,7 @@ public class RequestAPITest extends AndroidTestCase implements HttpConstants {
|
||||
|
||||
RequestHandle handle = mRequestQueue.queueRequest(
|
||||
"http://localhost:8080/test1", "GET", null, testEventHandler,
|
||||
null, 0, false);
|
||||
null, 0);
|
||||
|
||||
Log.d(LOGTAG, "testChunked - sent request waiting");
|
||||
handle.waitUntilComplete();
|
||||
@@ -330,7 +330,7 @@ public class RequestAPITest extends AndroidTestCase implements HttpConstants {
|
||||
Log.d(LOGTAG, testName + " start - rq = " + mRequestQueue);
|
||||
|
||||
RequestHandle requestHandle = mRequestQueue.queueRequest(
|
||||
"http://localhost:8080/test1", "GET", null, testEventHandler, null, 0, false);
|
||||
"http://localhost:8080/test1", "GET", null, testEventHandler, null, 0);
|
||||
Log.d(LOGTAG, testName + " - sent request waiting");
|
||||
|
||||
requestHandle.waitUntilComplete();
|
||||
@@ -398,10 +398,10 @@ public class RequestAPITest extends AndroidTestCase implements HttpConstants {
|
||||
leh2.expectHeaders();
|
||||
|
||||
RequestHandle handle0 = mRequestQueue.queueRequest(
|
||||
"http://localhost:8080/test1", "GET", null, testEventHandler, null, 0, false);
|
||||
"http://localhost:8080/test1", "GET", null, testEventHandler, null, 0);
|
||||
handle0.waitUntilComplete();
|
||||
RequestHandle handle1 = mRequestQueue.queueRequest(
|
||||
"http://localhost:8080/test1", "HEAD", null, testEventHandler, null, 0, false);
|
||||
"http://localhost:8080/test1", "HEAD", null, testEventHandler, null, 0);
|
||||
|
||||
Log.d(LOGTAG, "testGetAndHead - sent request. Waiting");
|
||||
handle1.waitUntilComplete();
|
||||
@@ -432,7 +432,7 @@ public class RequestAPITest extends AndroidTestCase implements HttpConstants {
|
||||
Log.d(LOGTAG, "testPost start - rq = " + mRequestQueue);
|
||||
|
||||
RequestHandle handle = mRequestQueue.queueRequest(
|
||||
"http://localhost:8080/test1", "POST", null, testEventHandler, null, 0, false);
|
||||
"http://localhost:8080/test1", "POST", null, testEventHandler, null, 0);
|
||||
|
||||
Log.d(LOGTAG, "testPost - sent request waiting");
|
||||
handle.waitUntilComplete();
|
||||
@@ -470,7 +470,7 @@ public class RequestAPITest extends AndroidTestCase implements HttpConstants {
|
||||
InputStream bodyProvider = new ByteArrayInputStream(mBody.getBytes());
|
||||
|
||||
RequestHandle handle = mRequestQueue.queueRequest(
|
||||
"http://localhost:8080/test1", "POST", null, testEventHandler, bodyProvider, bodyLength, false);
|
||||
"http://localhost:8080/test1", "POST", null, testEventHandler, bodyProvider, bodyLength);
|
||||
|
||||
Log.d(LOGTAG, "testPostWithData - sent request waiting");
|
||||
handle.waitUntilComplete();
|
||||
|
||||
Reference in New Issue
Block a user