/* * Copyright (C) 2010 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 com.android.dumprendertree2; import android.util.Log; import android.webkit.ConsoleMessage; import java.net.MalformedURLException; import java.net.URL; /** * A class that stores consoles messages, database callbacks, alert messages, etc. */ public class AdditionalTextOutput { private static final String LOG_TAG = "AdditionalTextOutput"; /** * Ordering of enums is important as it determines ordering of the toString method! * StringBuilders will be printed in the order the corresponding types appear here. */ private enum OutputType { JS_DIALOG, EXCEEDED_DB_QUOTA_MESSAGE, CONSOLE_MESSAGE; } StringBuilder[] mOutputs = new StringBuilder[OutputType.values().length]; private StringBuilder getStringBuilderForType(OutputType outputType) { int index = outputType.ordinal(); if (mOutputs[index] == null) { mOutputs[index] = new StringBuilder(); } return mOutputs[index]; } public void appendExceededDbQuotaMessage(String urlString, String databaseIdentifier) { StringBuilder output = getStringBuilderForType(OutputType.EXCEEDED_DB_QUOTA_MESSAGE); String protocol = ""; String host = ""; int port = 0; try { URL url = new URL(urlString); protocol = url.getProtocol(); host = url.getHost(); if (url.getPort() > -1) { port = url.getPort(); } } catch (MalformedURLException e) { Log.e(LOG_TAG, "urlString=" + urlString + " databaseIdentifier=" + databaseIdentifier, e); } output.append("UI DELEGATE DATABASE CALLBACK: "); output.append("exceededDatabaseQuotaForSecurityOrigin:{"); output.append(protocol + ", " + host + ", " + port + "} "); output.append("database:" + databaseIdentifier + "\n"); } public void appendConsoleMessage(ConsoleMessage consoleMessage) { StringBuilder output = getStringBuilderForType(OutputType.CONSOLE_MESSAGE); output.append("CONSOLE MESSAGE: line " + consoleMessage.lineNumber()); output.append(": " + consoleMessage.message() + "\n"); } public void appendJsAlert(String message) { StringBuilder output = getStringBuilderForType(OutputType.JS_DIALOG); output.append("ALERT: "); output.append(message); output.append('\n'); } public void appendJsConfirm(String message) { StringBuilder output = getStringBuilderForType(OutputType.JS_DIALOG); output.append("CONFIRM: "); output.append(message); output.append('\n'); } public void appendJsPrompt(String message, String defaultValue) { StringBuilder output = getStringBuilderForType(OutputType.JS_DIALOG); output.append("PROMPT: "); output.append(message); output.append(", default text: "); output.append(defaultValue); output.append('\n'); } @Override public String toString() { StringBuilder result = new StringBuilder(); for (int i = 0; i < mOutputs.length; i++) { if (mOutputs[i] != null) { result.append(mOutputs[i].toString()); } } return result.toString(); } }