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