19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.core; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.ArrayList; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.Map; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport org.apache.http.protocol.HTTP; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.Log; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.net.http.*; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Implements EventHandler and provides test functionality to validate 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * responses to requests from the test server 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class TestEventHandler implements EventHandler { 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Status variables 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int majorVersion = -1; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int minorVersion = -1; 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int responseCode = -1; 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String reasonPhrase; 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* List of headers received */ 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Map<String, String> headerMap; 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* Used to sync low level delayed requests */ 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Object syncObj = new Object(); 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* Indicates whether the low level request testing is in operation */ 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean useLowLevel = false; 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* Indicates whether responses should be automatically generated or 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * delayed 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean delayResponse = false; 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* Test method expectation identifiers */ 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final static int TEST_REQUEST_SENT = 0; 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final static int TEST_STATUS = 1; 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final static int TEST_HEADERS = 2; 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final static int TEST_LOCATION_CHANGED = 3; 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final static int TEST_DATA = 4; 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final static int TEST_ENDDATA = 5; 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final static int TEST_ERROR = 6; 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final static int TEST_SSL_CERTIFICATE_ERROR = 7; 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final static int TEST_NUM_EXPECTS = 8; 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* Expected status codes */ 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int expectMajor = -1; 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int expectMinor = -1; 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int expectCode = -1; 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* Array indicating which event types are expected */ 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean[] expects = new boolean[TEST_NUM_EXPECTS]; 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* Array indicating which event types are not expected */ 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean[] notExpecting = new boolean[TEST_NUM_EXPECTS]; 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* Indicates which events have been received */ 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean[] eventsReceived = new boolean[TEST_NUM_EXPECTS]; 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* Redirection variables */ 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String expectLocation; 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int expectPermanent = -1; 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* Content data expected to be received */ 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private byte[] expectData; 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int expectDataLength = -1; 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int expectErrorId = -1; 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int expectSslErrors = -1; 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private SslCertificate expectCertificate; 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public class TestHeader { 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public TestHeader(String n, String v) { 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project name = n; 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project value = v; 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String name; 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String value; 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private ArrayList<TestHeader> expectHeaders = new ArrayList<TestHeader>(); 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* Holds failure details */ 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private StringBuffer expectDetails = new StringBuffer(); 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* If we use a request handle, we retain a reference here for redirects 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * using setupRedirect 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private RequestHandle mRequestHandle; 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* The low level API uses this reference also for non-delayed requests */ 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private LowLevelNetRunner netRunner; 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public TestEventHandler() { 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0; i < TEST_NUM_EXPECTS; i++) { 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[i] = false; 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notExpecting[i] = false; 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventsReceived[i] = false; 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Implementation of EventHandler method called when a request has been 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * sent. If the test is waiting for this call, it will be signalled, 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * otherwise this method will trigger the response to be read 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * automatically. 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void requestSent() { 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(LOGTAG, "TestEventHandler:requestSent()"); 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_REQUEST_SENT] = false; 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventsReceived[TEST_REQUEST_SENT] = true; 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (notExpecting[TEST_REQUEST_SENT]) { 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("Request sent event received but not expected"); 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("\r\n"); 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (useLowLevel) { 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (delayResponse) { 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (syncObj) { 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project syncObj.notifyAll(); 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // mRequest.startReadingResponse(); 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Implements the EventHandler status method called when a server status 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * response is received. 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param major_version The HTTP major version 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param minor_version The HTTP minor version 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param code The status code 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param reason_phrase A reason phrase passed to us by the server 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void status(int major_version, int minor_version, 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int code, String reason_phrase) { 15943a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) { 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(LOGTAG, "TestEventHandler:status() major: " + major_version + 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " minor: " + minor_version + 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " code: " + code + 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " reason: " + reason_phrase); 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventsReceived[TEST_STATUS] = true; 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (notExpecting[TEST_STATUS]) { 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("Status event received but not expected"); 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("\r\n"); 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project majorVersion = major_version; 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project minorVersion = minor_version; 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project responseCode = code; 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project reasonPhrase = reason_phrase; 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expectMajor != -1) { 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expectMajor == major_version) { 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectMajor = -1; 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("Major version expected:"+expectMajor+ 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " got:"+major_version); 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("\r\n"); 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expectMinor != -1) { 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expectMinor == minor_version) { 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectMinor = -1; 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("Minor version expected:"+expectMinor+ 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " got:"+minor_version); 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("\r\n"); 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expectCode != -1) { 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expectCode == code) { 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectCode = -1; 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("Status code expected:"+expectCode+ 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " got:"+code); 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("\r\n"); 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((expectMajor == -1) && (expectMinor == -1) && (expectCode == -1)) { 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_STATUS] = false; 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.out.println("MAJOR = "+expectMajor+" MINOR = "+expectMinor+ 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " CODE = "+expectCode); 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Implements the EventHandler headers method called when a server 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * sends header fields 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void headers(Headers headers) { 22143a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) { 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(LOGTAG, "TestEventHandler:headers()"); 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_HEADERS] = false; 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (notExpecting[TEST_HEADERS]) { 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("Header event received but not expected"); 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("\r\n"); 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* Check through headers received for matches with expected 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * headers */ 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expectHeaders.isEmpty()) { 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = expectHeaders.size() - 1; i >= 0; i--) { 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TestHeader h = expectHeaders.get(i); 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.out.println("Expected header name: " + h.name); 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String s = null; 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch (h.name.hashCode()) { 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case -1132779846: 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = Long.toString(headers.getContentLength()); 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 785670158: 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = headers.getContentType(); 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 2095084583: 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = headers.getContentEncoding(); 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 1901043637: 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = headers.getLocation(); 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case -243037365: 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = headers.getWwwAuthenticate(); 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case -301767724: 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = headers.getProxyAuthenticate(); 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case -1267267485: 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = headers.getContentDisposition(); 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 1397189435: 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = headers.getAcceptRanges(); 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case -1309235404: 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = headers.getExpires(); 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case -208775662: 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = headers.getCacheControl(); 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 150043680: 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = headers.getLastModified(); 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 3123477: 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = headers.getEtag(); 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case -775651618: 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int ct = headers.getConnectionType(); 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (ct == Headers.CONN_CLOSE) { 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = HTTP.CONN_CLOSE; 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (ct == Headers.CONN_KEEP_ALIVE) { 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = HTTP.CONN_KEEP_ALIVE; 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project default: 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = null; 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (evaluateHeader(h, s)) { 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectHeaders.remove(i); 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean evaluateHeader(TestHeader h, String value) { 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (value == null) { 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_HEADERS] = true; 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.out.print(" Missing! "); 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append(" missing header " + h.name); 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (h.value == null) { 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.out.println("Expect value = null"); 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.out.println("Expect value = " + 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project (h.value.toLowerCase()) + " got " + 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project value.toLowerCase()); 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!h.value.equalsIgnoreCase(value)) { 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("expect header value " + h.value + 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " got " + value); 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_HEADERS] = true; 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Implements the EventHandler locationChanged method called when a server 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * sends a redirect message 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param newLocation The URL to the new server 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param permanent Indicator of whether this is a permanent change 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void locationChanged(String newLocation, boolean permanent) { 32743a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) { 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(LOGTAG, "TestEventHandler: locationChanged() " + 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project newLocation + " permanent " + permanent); 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventsReceived[TEST_LOCATION_CHANGED] = true; 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (notExpecting[TEST_LOCATION_CHANGED]) { 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("Location changed event received but "+ 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "not expected"); 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("\r\n"); 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expectLocation != null) { 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expectLocation.equals(newLocation)) { 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectLocation = null; 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("Location expected:"+expectLocation+ 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " got:"+newLocation); 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("\r\n"); 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expectPermanent != -1) { 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (((expectPermanent == 0) && !permanent) || 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ((expectPermanent == 1) && permanent)){ 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectPermanent = -1; 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("Location permanent expected:"+ 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectPermanent+" got"+permanent); 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("\r\n"); 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((expectLocation == null) && (expectPermanent == -1)) 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_LOCATION_CHANGED] = false; 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Implements the EventHandler data method called when a server 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * sends content data 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param data The byte array content 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param len The length of the data 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void data(byte[] data, int len) { 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean mismatch = false; 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 37343a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) { 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(LOGTAG, "TestEventHandler: data() " + len + " bytes"); 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventsReceived[TEST_DATA] = true; 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (notExpecting[TEST_DATA]) { 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("Data event received but not expected"); 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("\r\n"); 3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(LOGTAG, new String(data, 0, len)); 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expectDataLength != -1) { 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expectDataLength == len) { 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDataLength = -1; 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("expect data length mismatch expected:"+ 3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDataLength+" got:"+len); 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("\r\n"); 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* Check data only if length is the same */ 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((expectDataLength == -1) && expectData != null) { 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0; i < len; i++) { 3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expectData[i] != data[i]) { 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mismatch = true; 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("Expect data mismatch at byte "+ 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project i+" expected:"+expectData[i]+" got:"+data[i]); 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("\r\n"); 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((expectDataLength == -1) || !mismatch) 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_DATA] = false; 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Implements the EventHandler endData method called to 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * indicate completion or a request 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void endData() { 41743a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) { 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(LOGTAG, "TestEventHandler: endData() called"); 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventsReceived[TEST_ENDDATA] = true; 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (notExpecting[TEST_ENDDATA]) { 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("End data event received but not expected"); 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("\r\n"); 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_ENDDATA] = false; 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (useLowLevel) { 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (delayResponse) { 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (syncObj) { 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project syncObj.notifyAll(); 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (netRunner != null) { 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.out.println("TestEventHandler: endData() stopping "+ 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project netRunner); 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project netRunner.decrementRunCount(); 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Implements the EventHandler certificate method called every 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * time a resource is loaded via a secure connection 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void certificate(SslCertificate certificate) {} 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Implements the EventHandler error method called when a server 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * sends header fields 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param id Status code of the error 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param description Brief description of the error 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void error(int id, String description) { 45743a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) { 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(LOGTAG, "TestEventHandler: error() called Id:" + id + 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " description " + description); 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventsReceived[TEST_ERROR] = true; 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (notExpecting[TEST_ERROR]) { 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("Error event received but not expected"); 4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("\r\n"); 4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expectErrorId != -1) { 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expectErrorId == id) { 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectErrorId = -1; 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("Error Id expected:"+expectErrorId+ 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " got:"+id); 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("\r\n"); 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expectErrorId == -1) 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_ERROR] = false; 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (useLowLevel) { 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (delayResponse) { 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (syncObj) { 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project syncObj.notifyAll(); 4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (netRunner != null) { 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project System.out.println("TestEventHandler: endData() stopping "+ 4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project netRunner); 4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project netRunner.decrementRunCount(); 4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * SSL certificate error callback. Handles SSL error(s) on the way 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * up to the user. 4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 499699c646839d45f6ae04a9c8a7ab2fd870995dffaGrace Kloba public boolean handleSslErrorRequest(SslError error) { 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int primaryError = error.getPrimaryError(); 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 50243a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) { 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(LOGTAG, "TestEventHandler: handleSslErrorRequest(): "+ 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " primary error:" + primaryError + 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " certificate: " + error.getCertificate()); 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventsReceived[TEST_SSL_CERTIFICATE_ERROR] = true; 5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (notExpecting[TEST_SSL_CERTIFICATE_ERROR]) { 5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("SSL Certificate error event received "+ 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "but not expected"); 5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("\r\n"); 5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expectSslErrors != -1) { 5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expectSslErrors == primaryError) { 5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectSslErrors = -1; 5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("SslCertificateError id expected:"+ 5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectSslErrors+" got: " + primaryError); 5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.append("\r\n"); 5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // SslCertificate match here? 5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expectSslErrors == -1) // && expectSslCertificate == certificate? 5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_SSL_CERTIFICATE_ERROR] = false; 529699c646839d45f6ae04a9c8a7ab2fd870995dffaGrace Kloba 530699c646839d45f6ae04a9c8a7ab2fd870995dffaGrace Kloba // return false so that we won't block the thread 531699c646839d45f6ae04a9c8a7ab2fd870995dffaGrace Kloba return false; 5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use the low level net runner with no delayed response 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param runner The LowLevelNetRunner object 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setNetRunner(LowLevelNetRunner runner) { 5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setNetRunner(runner, false); 5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Use the low level net runner and specify if the response 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * should be delayed 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param runner The LowLevelNetRunner object 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param delayedResponse Set to true is you will use the 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * waitForRequestSent/waitForRequestResponse routines 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setNetRunner(LowLevelNetRunner runner, 5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean delayedResponse) { 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project netRunner = runner; 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project useLowLevel = true; 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project delayResponse = delayedResponse; 5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!delayResponse) 5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project netRunner.incrementRunCount(); 5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Enable this listeners Request object to read server responses. 5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This should only be used in conjunction with setDelayResponse(true) 5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void waitForRequestResponse() { 5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!delayResponse || !useLowLevel) { 5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.d(LOGTAG, " Cant do this without delayReponse set "); 5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //if (mRequest != null) { 5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // mRequest.startReadingResponse(); 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* Now wait for the response to be completed either through endData 5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or an error 5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (syncObj) { 5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project syncObj.wait(); 5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (InterruptedException e) { 5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Enable this listeners Request object to read server responses. 5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This should only be used in conjunction with setDelayResponse(true) 5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void waitForRequestSent() { 5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!delayResponse || !useLowLevel) { 5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.d(LOGTAG, " Cant do this without delayReponse set "); 5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* Now wait for the response to be completed either through endData 5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or an error 5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (syncObj) { 5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project syncObj.wait(); 5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (InterruptedException e) { 6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* Test expected values - these routines set the tests expectations */ 6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectRequestSent() { 6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_REQUEST_SENT] = true; 6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectNoRequestSent() { 6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notExpecting[TEST_REQUEST_SENT] = true; 6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectStatus() { 6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_STATUS] = true; 6169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectNoStatus() { 6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notExpecting[TEST_STATUS] = true; 6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectStatus(int major, int minor, int code) { 6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_STATUS] = true; 6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectMajor = major; 6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectMinor = minor; 6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectCode = code; 6279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectStatus(int code) { 6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_STATUS] = true; 6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectCode = code; 6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectHeaders() { 6359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_HEADERS] = true; 6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectNoHeaders() { 6399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notExpecting[TEST_HEADERS] = true; 6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectHeaderAdd(String name) { 6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_HEADERS] = true; 6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TestHeader h = new TestHeader(name.toLowerCase(), null); 6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectHeaders.add(h); 6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectHeaderAdd(String name, String value) { 6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_HEADERS] = true; 6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TestHeader h = new TestHeader(name.toLowerCase(), value); 6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectHeaders.add(h); 6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectLocationChanged() { 6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_LOCATION_CHANGED] = true; 6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectNoLocationChanged() { 6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notExpecting[TEST_LOCATION_CHANGED] = true; 6609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectLocationChanged(String newLocation) { 6639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_LOCATION_CHANGED] = true; 6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectLocation = newLocation; 6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectLocationChanged(String newLocation, boolean permanent) { 6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_LOCATION_CHANGED] = true; 6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectLocation = newLocation; 6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectPermanent = permanent ? 1 : 0; 6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectData() { 6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_DATA] = true; 6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectNoData() { 6789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notExpecting[TEST_DATA] = true; 6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectData(int len) { 6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_DATA] = true; 6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDataLength = len; 6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectData(byte[] data, int len) { 6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_DATA] = true; 6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectData = new byte[len]; 6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDataLength = len; 6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0; i < len; i++) { 6929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectData[i] = data[i]; 6939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectEndData() { 6979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_ENDDATA] = true; 6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectNoEndData() { 7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notExpecting[TEST_ENDDATA] = true; 7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectError() { 7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_ERROR] = true; 7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectNoError() { 7099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notExpecting[TEST_ERROR] = true; 7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectError(int errorId) { 7139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_ERROR] = true; 7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectErrorId = errorId; 7159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectSSLCertificateError() { 7189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_SSL_CERTIFICATE_ERROR] = true; 7199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectNoSSLCertificateError() { 7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notExpecting[TEST_SSL_CERTIFICATE_ERROR] = true; 7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectSSLCertificateError(int errors) { 7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_SSL_CERTIFICATE_ERROR] = true; 7279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectSslErrors = errors; 7289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void expectSSLCertificateError(SslCertificate certificate) { 7319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[TEST_SSL_CERTIFICATE_ERROR] = true; 7329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectCertificate = certificate; 7339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Test to see if current expectations match recieved information 7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return True is all expected results have been matched 7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean expectPassed() { 7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0; i < TEST_NUM_EXPECTS; i++) { 7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (expects[i] == true) { 7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0; i < TEST_NUM_EXPECTS; i++) { 7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (eventsReceived[i] && notExpecting[i]) { 7489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 7529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return message indicating expectation failures 7569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getFailureMessage() { 7589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return expectDetails.toString(); 7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Reset all expectation values for re-use 7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void resetExpects() { 7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectMajor = -1; 7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectMinor = -1; 7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectCode = -1; 7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectLocation = null; 7699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectPermanent = -1; 7709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectErrorId = -1; 7719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectSslErrors = -1; 7729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectCertificate = null; 7739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDetails.setLength(0); 7749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectHeaders.clear(); 7759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0; i < TEST_NUM_EXPECTS; i++) { 7779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expects[i] = false; 7789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notExpecting[i] = false; 7799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventsReceived[i] = false; 7809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0; i < expectDataLength; i++) { 7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectData[i] = 0; 7849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project expectDataLength = -1; 7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Attach the RequestHandle to this handler 7919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param requestHandle The RequestHandle 7929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void attachRequestHandle(RequestHandle requestHandle) { 79443a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) { 7959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(LOGTAG, "TestEventHandler.attachRequestHandle(): " + 7969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "requestHandle: " + requestHandle); 7979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRequestHandle = requestHandle; 7999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Detach the RequestHandle 8039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void detachRequestHandle() { 80543a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) { 8069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(LOGTAG, "TestEventHandler.detachRequestHandle(): " + 8079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "requestHandle: " + mRequestHandle); 8089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRequestHandle = null; 8109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected final static String LOGTAG = "http"; 8139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 814