| /* |
| * Copyright (C) 2012 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package android.webkitsecurity.cts; |
| |
| import java.util.Date; |
| |
| import android.net.Uri; |
| import android.util.Log; |
| |
| import junit.framework.Assert; |
| |
| import java.io.File; |
| import java.io.FileInputStream; |
| |
| import android.webkit.WebView; |
| import android.webkit.WebSettings; |
| import android.webkit.MimeTypeMap; |
| |
| import android.cts.util.PollingCheck; |
| |
| import android.content.Context; |
| import android.content.res.AssetManager; |
| |
| import android.test.UiThreadTest; |
| import android.test.ActivityInstrumentationTestCase2; |
| |
| import android.webkitsecurity.cts.WebViewStubActivity; |
| |
| /* |
| * This file acts as a template for the generation of other webkit tests. |
| * |
| * The contents of the assets/webkitsecuritytests directory will be scanned |
| * for html files, and for each one found a new class will be generated based |
| * on this template. |
| * |
| * The specific things that have to be done to this template are: |
| * |
| * 1. Change the name to Webkit + javify(testname) + Test |
| * 2. Change the private TEST_PATH value to the test's name |
| * 3. Change the logtag to shellify(testname) |
| * 4. Change the constructor name to <classname> |
| * 5. Save this as <classname>.java |
| * 6. TODO: Remove this comment |
| * |
| */ |
| |
| public class WebkitDynamicMarkerCrashTest extends ActivityInstrumentationTestCase2<WebViewStubActivity> { |
| private static final String LOGTAG = "WebkitDynamicMarkerCrashTest"; |
| private static final String TEST_PATH = "dynamic-marker-crash.html"; |
| private static final int INITIAL_PROGRESS = 100; |
| private static long TEST_TIMEOUT = 20000L; |
| private static long TIME_FOR_LAYOUT = 1000L; |
| |
| private WebView mWebView; |
| private boolean mIsUiThreadDone; |
| |
| public WebkitDynamicMarkerCrashTest() { |
| super("android.webkitsecurity.cts", WebViewStubActivity.class); |
| } |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| mWebView = getActivity().getWebView(); |
| } |
| |
| @Override |
| protected void tearDown() throws Exception { |
| super.tearDown(); |
| } |
| |
| @UiThreadTest |
| public void testWebkitCrashes() throws Exception { |
| |
| // set up the webview |
| mWebView = new WebView(getActivity()); |
| getActivity().setContentView(mWebView); |
| |
| // We need to be able to run JS for most of these tests |
| WebSettings settings = mWebView.getSettings(); |
| settings.setJavaScriptEnabled(true); |
| settings.setJavaScriptCanOpenWindowsAutomatically(true); |
| |
| // Get the url for the test |
| Log.d(LOGTAG, TEST_PATH); |
| String url = "file:///android_asset/" + TEST_PATH; |
| |
| Log.d(LOGTAG, url.toString()); |
| |
| // Run the test |
| assertLoadUrlSuccessfully(url); |
| } |
| |
| private void assertLoadUrlSuccessfully(String url) { |
| mWebView.loadUrl(url); |
| waitForLoadComplete(); |
| } |
| |
| private void waitForLoadComplete() { |
| new PollingCheck(TEST_TIMEOUT) { |
| @Override |
| protected boolean check() { |
| return mWebView.getProgress() == 100; |
| } |
| }.run(); |
| try { |
| Thread.sleep(TIME_FOR_LAYOUT); |
| } catch (InterruptedException e) { |
| Log.w(LOGTAG, "waitForLoadComplete() interrupted while sleeping for layout delay."); |
| } |
| } |
| } |