1dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski/* 2dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * Copyright (C) 2010 The Android Open Source Project 3dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * 4dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * Licensed under the Apache License, Version 2.0 (the "License"); 5dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * you may not use this file except in compliance with the License. 6dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * You may obtain a copy of the License at 7dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * 8dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * http://www.apache.org/licenses/LICENSE-2.0 9dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * 10dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * Unless required by applicable law or agreed to in writing, software 11dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * distributed under the License is distributed on an "AS IS" BASIS, 12dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * See the License for the specific language governing permissions and 14dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * limitations under the License. 15dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski */ 16dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski 17dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowskipackage com.android.dumprendertree2; 18dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski 19dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowskiimport android.util.Log; 20dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowskiimport android.webkit.ConsoleMessage; 21dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski 22dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowskiimport java.net.MalformedURLException; 23dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowskiimport java.net.URL; 24dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski 25dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski/** 26dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * A class that stores consoles messages, database callbacks, alert messages, etc. 27dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski */ 28dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowskipublic class AdditionalTextOutput { 29dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski private static final String LOG_TAG = "AdditionalTextOutput"; 30dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski 3140968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski /** 3240968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski * Ordering of enums is important as it determines ordering of the toString method! 3340968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski * StringBuilders will be printed in the order the corresponding types appear here. 3440968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski */ 35dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski private enum OutputType { 3640968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski JS_DIALOG, 37dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski EXCEEDED_DB_QUOTA_MESSAGE, 38dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski CONSOLE_MESSAGE; 39dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski } 40dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski 41dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski StringBuilder[] mOutputs = new StringBuilder[OutputType.values().length]; 42dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski 4340968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski private StringBuilder getStringBuilderForType(OutputType outputType) { 4440968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski int index = outputType.ordinal(); 45dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski if (mOutputs[index] == null) { 46dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski mOutputs[index] = new StringBuilder(); 47dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski } 4840968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski return mOutputs[index]; 4940968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski } 5040968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski 5140968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski public void appendExceededDbQuotaMessage(String urlString, String databaseIdentifier) { 5240968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski StringBuilder output = getStringBuilderForType(OutputType.EXCEEDED_DB_QUOTA_MESSAGE); 53dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski 54dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski String protocol = ""; 55dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski String host = ""; 56dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski int port = 0; 57dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski 58dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski try { 59dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski URL url = new URL(urlString); 60dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski protocol = url.getProtocol(); 61dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski host = url.getHost(); 62dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski if (url.getPort() > -1) { 63dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski port = url.getPort(); 64dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski } 65dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski } catch (MalformedURLException e) { 662e5982a55ac031110ed39515a76f7a5ec9ff2c14Maksymilian Osowski Log.e(LOG_TAG, "urlString=" + urlString + " databaseIdentifier=" + databaseIdentifier, 672e5982a55ac031110ed39515a76f7a5ec9ff2c14Maksymilian Osowski e); 68dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski } 69dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski 7040968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski output.append("UI DELEGATE DATABASE CALLBACK: "); 7140968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski output.append("exceededDatabaseQuotaForSecurityOrigin:{"); 7240968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski output.append(protocol + ", " + host + ", " + port + "} "); 7340968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski output.append("database:" + databaseIdentifier + "\n"); 74dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski } 75dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski 76dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski public void appendConsoleMessage(ConsoleMessage consoleMessage) { 7740968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski StringBuilder output = getStringBuilderForType(OutputType.CONSOLE_MESSAGE); 7840968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski 7940968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski output.append("CONSOLE MESSAGE: line " + consoleMessage.lineNumber()); 8040968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski output.append(": " + consoleMessage.message() + "\n"); 8140968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski } 8240968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski 8340968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski public void appendJsAlert(String message) { 8440968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski StringBuilder output = getStringBuilderForType(OutputType.JS_DIALOG); 8540968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski 8640968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski output.append("ALERT: "); 8740968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski output.append(message); 8840968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski output.append('\n'); 8940968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski } 9040968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski 9140968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski public void appendJsConfirm(String message) { 9240968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski StringBuilder output = getStringBuilderForType(OutputType.JS_DIALOG); 9340968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski 9440968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski output.append("CONFIRM: "); 9540968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski output.append(message); 9640968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski output.append('\n'); 9740968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski } 9840968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski 9940968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski public void appendJsPrompt(String message, String defaultValue) { 10040968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski StringBuilder output = getStringBuilderForType(OutputType.JS_DIALOG); 101dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski 10240968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski output.append("PROMPT: "); 10340968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski output.append(message); 10440968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski output.append(", default text: "); 10540968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski output.append(defaultValue); 10640968a4540164b69436c482738f46e22867b8ff3Maksymilian Osowski output.append('\n'); 107dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski } 108dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski 109dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski @Override 110dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski public String toString() { 111dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski StringBuilder result = new StringBuilder(); 112dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski for (int i = 0; i < mOutputs.length; i++) { 113dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski if (mOutputs[i] != null) { 114dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski result.append(mOutputs[i].toString()); 115dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski } 116dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski } 117dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski return result.toString(); 118dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski } 119dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski}