• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2010 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.dumprendertree2;
18 
19 import android.util.Log;
20 import android.webkit.ConsoleMessage;
21 
22 import java.net.MalformedURLException;
23 import java.net.URL;
24 
25 /**
26  * A class that stores consoles messages, database callbacks, alert messages, etc.
27  */
28 public class AdditionalTextOutput {
29     private static final String LOG_TAG = "AdditionalTextOutput";
30 
31     /**
32      * Ordering of enums is important as it determines ordering of the toString method!
33      * StringBuilders will be printed in the order the corresponding types appear here.
34      */
35     private enum OutputType {
36         JS_DIALOG,
37         EXCEEDED_DB_QUOTA_MESSAGE,
38         CONSOLE_MESSAGE;
39     }
40 
41     StringBuilder[] mOutputs = new StringBuilder[OutputType.values().length];
42 
getStringBuilderForType(OutputType outputType)43     private StringBuilder getStringBuilderForType(OutputType outputType) {
44         int index = outputType.ordinal();
45         if (mOutputs[index] == null) {
46             mOutputs[index] = new StringBuilder();
47         }
48         return mOutputs[index];
49     }
50 
appendExceededDbQuotaMessage(String urlString, String databaseIdentifier)51     public void appendExceededDbQuotaMessage(String urlString, String databaseIdentifier) {
52         StringBuilder output = getStringBuilderForType(OutputType.EXCEEDED_DB_QUOTA_MESSAGE);
53 
54         String protocol = "";
55         String host = "";
56         int port = 0;
57 
58         try {
59             URL url = new URL(urlString);
60             protocol = url.getProtocol();
61             host = url.getHost();
62             if (url.getPort() > -1) {
63                 port = url.getPort();
64             }
65         } catch (MalformedURLException e) {
66             Log.e(LOG_TAG, "urlString=" + urlString + " databaseIdentifier=" + databaseIdentifier,
67                     e);
68         }
69 
70         output.append("UI DELEGATE DATABASE CALLBACK: ");
71         output.append("exceededDatabaseQuotaForSecurityOrigin:{");
72         output.append(protocol + ", " + host + ", " + port + "} ");
73         output.append("database:" + databaseIdentifier + "\n");
74     }
75 
appendConsoleMessage(ConsoleMessage consoleMessage)76     public void appendConsoleMessage(ConsoleMessage consoleMessage) {
77         StringBuilder output = getStringBuilderForType(OutputType.CONSOLE_MESSAGE);
78 
79         output.append("CONSOLE MESSAGE: line " + consoleMessage.lineNumber());
80         output.append(": " + consoleMessage.message() + "\n");
81     }
82 
appendJsAlert(String message)83     public void appendJsAlert(String message) {
84         StringBuilder output = getStringBuilderForType(OutputType.JS_DIALOG);
85 
86         output.append("ALERT: ");
87         output.append(message);
88         output.append('\n');
89     }
90 
appendJsConfirm(String message)91     public void appendJsConfirm(String message) {
92         StringBuilder output = getStringBuilderForType(OutputType.JS_DIALOG);
93 
94         output.append("CONFIRM: ");
95         output.append(message);
96         output.append('\n');
97     }
98 
appendJsPrompt(String message, String defaultValue)99     public void appendJsPrompt(String message, String defaultValue) {
100         StringBuilder output = getStringBuilderForType(OutputType.JS_DIALOG);
101 
102         output.append("PROMPT: ");
103         output.append(message);
104         output.append(", default text: ");
105         output.append(defaultValue);
106         output.append('\n');
107     }
108 
109     @Override
toString()110     public String toString() {
111         StringBuilder result = new StringBuilder();
112         for (int i = 0; i < mOutputs.length; i++) {
113             if (mOutputs[i] != null) {
114                 result.append(mOutputs[i].toString());
115             }
116         }
117         return result.toString();
118     }
119 }