14df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project/* 24df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project * Copyright (C) 2009 The Android Open Source Project 34df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project * 44df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 54df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project * you may not use this file except in compliance with the License. 64df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project * You may obtain a copy of the License at 74df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project * 84df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 94df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project * 104df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 114df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 124df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project * See the License for the specific language governing permissions and 144df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project * limitations under the License. 154df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project */ 164df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project 174df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Projectpackage android.webkit; 184df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project 194df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Projectimport android.test.AndroidTestCase; 204df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Projectimport android.util.Log; 214df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Projectimport android.webkit.CacheManager.CacheResult; 224df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Projectimport android.webkit.PluginData; 234df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Projectimport android.webkit.UrlInterceptHandler; 244df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project 254df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Projectimport java.util.LinkedList; 264df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Projectimport java.util.Map; 274df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project 284df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Projectpublic class UrlInterceptRegistryTest extends AndroidTestCase { 294df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project 304df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project /** 314df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project * To run these tests: $ mmm 324df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project * frameworks/base/tests/CoreTests/android && adb remount && adb 334df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project * sync $ adb shell am instrument -w -e class \ 344df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project * android.webkit.UrlInterceptRegistryTest \ 354df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project * android.core/android.test.InstrumentationTestRunner 364df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project */ 374df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project 384df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project private static class MockUrlInterceptHandler implements UrlInterceptHandler { 394df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project private PluginData mData; 404df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project private String mUrl; 414df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project 424df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project public MockUrlInterceptHandler(PluginData data, String url) { 434df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project mData = data; 444df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project mUrl = url; 454df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project } 464df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project 474df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project public CacheResult service(String url, Map<String, String> headers) { 484df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project return null; 494df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project } 504df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project 514df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project public PluginData getPluginData(String url, 524df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project Map<String, 534df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project String> headers) { 544df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project if (mUrl.equals(url)) { 554df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project return mData; 564df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project } 574df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project 584df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project return null; 594df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project } 604df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project } 614df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project 624df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project public void testGetPluginData() { 634df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project PluginData data = new PluginData(null, 0 , null, 200); 644df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project String url = new String("url1"); 654df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project MockUrlInterceptHandler handler1 = 664df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project new MockUrlInterceptHandler(data, url); 674df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project 684df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project data = new PluginData(null, 0 , null, 404); 694df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project url = new String("url2"); 704df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project MockUrlInterceptHandler handler2 = 714df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project new MockUrlInterceptHandler(data, url); 724df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project 734df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project assertTrue(UrlInterceptRegistry.registerHandler(handler1)); 744df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project assertTrue(UrlInterceptRegistry.registerHandler(handler2)); 754df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project 764df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project data = UrlInterceptRegistry.getPluginData("url1", null); 774df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project assertTrue(data != null); 784df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project assertTrue(data.getStatusCode() == 200); 794df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project 804df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project data = UrlInterceptRegistry.getPluginData("url2", null); 814df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project assertTrue(data != null); 824df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project assertTrue(data.getStatusCode() == 404); 834df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project 844df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project assertTrue(UrlInterceptRegistry.unregisterHandler(handler1)); 854df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project assertTrue(UrlInterceptRegistry.unregisterHandler(handler2)); 864df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project 874df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project } 884df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project} 89