CallbackProxy.java revision e6f3e45dc4d8a2b482183c57c61dd9ea22505c85
1/* 2 * Copyright (C) 2007 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 17package com.android.dumprendertree; 18 19import android.os.Handler; 20import android.os.Message; 21import android.webkit.WebStorage; 22 23import java.util.HashMap; 24 25public class CallbackProxy extends Handler implements EventSender, LayoutTestController { 26 27 private EventSender mEventSender; 28 private LayoutTestController mLayoutTestController; 29 30 private static final int EVENT_DOM_LOG = 1; 31 private static final int EVENT_FIRE_KBD = 2; 32 private static final int EVENT_KEY_DOWN_1 = 3; 33 private static final int EVENT_KEY_DOWN_2 = 4; 34 private static final int EVENT_LEAP = 5; 35 private static final int EVENT_MOUSE_CLICK = 6; 36 private static final int EVENT_MOUSE_DOWN = 7; 37 private static final int EVENT_MOUSE_MOVE = 8; 38 private static final int EVENT_MOUSE_UP = 9; 39 40 private static final int LAYOUT_CLEAR_LIST = 20; 41 private static final int LAYOUT_DISPLAY = 21; 42 private static final int LAYOUT_DUMP_TEXT = 22; 43 private static final int LAYOUT_DUMP_HISTORY = 23; 44 private static final int LAYOUT_DUMP_CHILD_SCROLL = 24; 45 private static final int LAYOUT_DUMP_EDIT_CB = 25; 46 private static final int LAYOUT_DUMP_SEL_RECT = 26; 47 private static final int LAYOUT_DUMP_TITLE_CHANGES = 27; 48 private static final int LAYOUT_KEEP_WEB_HISTORY = 28; 49 private static final int LAYOUT_NOTIFY_DONE = 29; 50 private static final int LAYOUT_QUEUE_BACK_NAV = 30; 51 private static final int LAYOUT_QUEUE_FWD_NAV = 31; 52 private static final int LAYOUT_QUEUE_LOAD = 32; 53 private static final int LAYOUT_QUEUE_RELOAD = 33; 54 private static final int LAYOUT_QUEUE_SCRIPT = 34; 55 private static final int LAYOUT_REPAINT_HORZ = 35; 56 private static final int LAYOUT_SET_ACCEPT_EDIT = 36; 57 private static final int LAYOUT_MAIN_FIRST_RESP = 37; 58 private static final int LAYOUT_SET_WINDOW_KEY = 38; 59 private static final int LAYOUT_TEST_REPAINT = 39; 60 private static final int LAYOUT_WAIT_UNTIL_DONE = 40; 61 private static final int LAYOUT_DUMP_DATABASE_CALLBACKS = 41; 62 private static final int LAYOUT_SET_CAN_OPEN_WINDOWS = 42; 63 64 CallbackProxy(EventSender eventSender, 65 LayoutTestController layoutTestController) { 66 mEventSender = eventSender; 67 mLayoutTestController = layoutTestController; 68 } 69 70 public void handleMessage(Message msg) { 71 switch (msg.what) { 72 case EVENT_DOM_LOG: 73 mEventSender.enableDOMUIEventLogging(msg.arg1); 74 break; 75 case EVENT_FIRE_KBD: 76 mEventSender.fireKeyboardEventsToElement(msg.arg1); 77 break; 78 case EVENT_KEY_DOWN_1: 79 HashMap map = (HashMap) msg.obj; 80 mEventSender.keyDown((String) map.get("character"), 81 (String[]) map.get("withModifiers")); 82 break; 83 84 case EVENT_KEY_DOWN_2: 85 mEventSender.keyDown((String)msg.obj); 86 break; 87 88 case EVENT_LEAP: 89 mEventSender.leapForward(msg.arg1); 90 break; 91 92 case EVENT_MOUSE_CLICK: 93 mEventSender.mouseClick(); 94 break; 95 96 case EVENT_MOUSE_DOWN: 97 mEventSender.mouseDown(); 98 break; 99 100 case EVENT_MOUSE_MOVE: 101 mEventSender.mouseMoveTo(msg.arg1, msg.arg2); 102 break; 103 104 case EVENT_MOUSE_UP: 105 mEventSender.mouseUp(); 106 break; 107 108 case LAYOUT_CLEAR_LIST: 109 mLayoutTestController.clearBackForwardList(); 110 break; 111 112 case LAYOUT_DISPLAY: 113 mLayoutTestController.display(); 114 break; 115 116 case LAYOUT_DUMP_TEXT: 117 mLayoutTestController.dumpAsText(); 118 break; 119 120 case LAYOUT_DUMP_HISTORY: 121 mLayoutTestController.dumpBackForwardList(); 122 break; 123 124 case LAYOUT_DUMP_CHILD_SCROLL: 125 mLayoutTestController.dumpChildFrameScrollPositions(); 126 break; 127 128 case LAYOUT_DUMP_EDIT_CB: 129 mLayoutTestController.dumpEditingCallbacks(); 130 break; 131 132 case LAYOUT_DUMP_SEL_RECT: 133 mLayoutTestController.dumpSelectionRect(); 134 break; 135 136 case LAYOUT_DUMP_TITLE_CHANGES: 137 mLayoutTestController.dumpTitleChanges(); 138 break; 139 140 case LAYOUT_KEEP_WEB_HISTORY: 141 mLayoutTestController.keepWebHistory(); 142 break; 143 144 case LAYOUT_NOTIFY_DONE: 145 mLayoutTestController.notifyDone(); 146 break; 147 148 case LAYOUT_QUEUE_BACK_NAV: 149 mLayoutTestController.queueBackNavigation(msg.arg1); 150 break; 151 152 case LAYOUT_QUEUE_FWD_NAV: 153 mLayoutTestController.queueForwardNavigation(msg.arg1); 154 break; 155 156 case LAYOUT_QUEUE_LOAD: 157 HashMap<String, String> loadMap = 158 (HashMap<String, String>) msg.obj; 159 mLayoutTestController.queueLoad(loadMap.get("Url"), 160 loadMap.get("frameTarget")); 161 break; 162 163 case LAYOUT_QUEUE_RELOAD: 164 mLayoutTestController.queueReload(); 165 break; 166 167 case LAYOUT_QUEUE_SCRIPT: 168 mLayoutTestController.queueScript((String)msg.obj); 169 break; 170 171 case LAYOUT_REPAINT_HORZ: 172 mLayoutTestController.repaintSweepHorizontally(); 173 break; 174 175 case LAYOUT_SET_ACCEPT_EDIT: 176 mLayoutTestController.setAcceptsEditing( 177 msg.arg1 == 1 ? true : false); 178 break; 179 case LAYOUT_MAIN_FIRST_RESP: 180 mLayoutTestController.setMainFrameIsFirstResponder( 181 msg.arg1 == 1 ? true : false); 182 break; 183 184 case LAYOUT_SET_WINDOW_KEY: 185 mLayoutTestController.setWindowIsKey( 186 msg.arg1 == 1 ? true : false); 187 break; 188 189 case LAYOUT_TEST_REPAINT: 190 mLayoutTestController.testRepaint(); 191 break; 192 193 case LAYOUT_WAIT_UNTIL_DONE: 194 mLayoutTestController.waitUntilDone(); 195 break; 196 197 case LAYOUT_DUMP_DATABASE_CALLBACKS: 198 mLayoutTestController.dumpDatabaseCallbacks(); 199 break; 200 201 case LAYOUT_SET_CAN_OPEN_WINDOWS: 202 mLayoutTestController.setCanOpenWindows(); 203 break; 204 } 205 } 206 207 // EventSender Methods 208 209 public void enableDOMUIEventLogging(int DOMNode) { 210 obtainMessage(EVENT_DOM_LOG, DOMNode, 0).sendToTarget(); 211 } 212 213 public void fireKeyboardEventsToElement(int DOMNode) { 214 obtainMessage(EVENT_FIRE_KBD, DOMNode, 0).sendToTarget(); 215 } 216 217 public void keyDown(String character, String[] withModifiers) { 218 // TODO Auto-generated method stub 219 HashMap map = new HashMap(); 220 map.put("character", character); 221 map.put("withModifiers", withModifiers); 222 obtainMessage(EVENT_KEY_DOWN_1, map).sendToTarget(); 223 } 224 225 public void keyDown(String character) { 226 obtainMessage(EVENT_KEY_DOWN_2, character).sendToTarget(); 227 } 228 229 public void leapForward(int milliseconds) { 230 obtainMessage(EVENT_LEAP, milliseconds, 0).sendToTarget(); 231 } 232 233 public void mouseClick() { 234 obtainMessage(EVENT_MOUSE_CLICK).sendToTarget(); 235 } 236 237 public void mouseDown() { 238 obtainMessage(EVENT_MOUSE_DOWN).sendToTarget(); 239 } 240 241 public void mouseMoveTo(int X, int Y) { 242 obtainMessage(EVENT_MOUSE_MOVE, X, Y).sendToTarget(); 243 } 244 245 public void mouseUp() { 246 obtainMessage(EVENT_MOUSE_UP).sendToTarget(); 247 } 248 249 // LayoutTestController Methods 250 251 public void clearBackForwardList() { 252 obtainMessage(LAYOUT_CLEAR_LIST).sendToTarget(); 253 } 254 255 public void display() { 256 obtainMessage(LAYOUT_DISPLAY).sendToTarget(); 257 } 258 259 public void dumpAsText() { 260 obtainMessage(LAYOUT_DUMP_TEXT).sendToTarget(); 261 } 262 263 public void dumpBackForwardList() { 264 obtainMessage(LAYOUT_DUMP_HISTORY).sendToTarget(); 265 } 266 267 public void dumpChildFrameScrollPositions() { 268 obtainMessage(LAYOUT_DUMP_CHILD_SCROLL).sendToTarget(); 269 } 270 271 public void dumpEditingCallbacks() { 272 obtainMessage(LAYOUT_DUMP_EDIT_CB).sendToTarget(); 273 } 274 275 public void dumpSelectionRect() { 276 obtainMessage(LAYOUT_DUMP_SEL_RECT).sendToTarget(); 277 } 278 279 public void dumpTitleChanges() { 280 obtainMessage(LAYOUT_DUMP_TITLE_CHANGES).sendToTarget(); 281 } 282 283 public void keepWebHistory() { 284 obtainMessage(LAYOUT_KEEP_WEB_HISTORY).sendToTarget(); 285 } 286 287 public void notifyDone() { 288 obtainMessage(LAYOUT_NOTIFY_DONE).sendToTarget(); 289 } 290 291 public void queueBackNavigation(int howfar) { 292 obtainMessage(LAYOUT_QUEUE_BACK_NAV, howfar, 0).sendToTarget(); 293 } 294 295 public void queueForwardNavigation(int howfar) { 296 obtainMessage(LAYOUT_QUEUE_FWD_NAV, howfar, 0).sendToTarget(); 297 } 298 299 public void queueLoad(String Url, String frameTarget) { 300 HashMap <String, String>map = new HashMap<String, String>(); 301 map.put("Url", Url); 302 map.put("frameTarget", frameTarget); 303 obtainMessage(LAYOUT_QUEUE_LOAD, map).sendToTarget(); 304 } 305 306 public void queueReload() { 307 obtainMessage(LAYOUT_QUEUE_RELOAD).sendToTarget(); 308 } 309 310 public void queueScript(String scriptToRunInCurrentContext) { 311 obtainMessage(LAYOUT_QUEUE_SCRIPT, 312 scriptToRunInCurrentContext).sendToTarget(); 313 } 314 315 public void repaintSweepHorizontally() { 316 obtainMessage(LAYOUT_REPAINT_HORZ).sendToTarget(); 317 } 318 319 public void setAcceptsEditing(boolean b) { 320 obtainMessage(LAYOUT_SET_ACCEPT_EDIT, b ? 1 : 0, 0).sendToTarget(); 321 } 322 323 public void setMainFrameIsFirstResponder(boolean b) { 324 obtainMessage(LAYOUT_MAIN_FIRST_RESP, b ? 1 : 0, 0).sendToTarget(); 325 } 326 327 public void setWindowIsKey(boolean b) { 328 obtainMessage(LAYOUT_SET_WINDOW_KEY,b ? 1 : 0, 0).sendToTarget(); 329 } 330 331 public void testRepaint() { 332 obtainMessage(LAYOUT_TEST_REPAINT).sendToTarget(); 333 } 334 335 public void waitUntilDone() { 336 obtainMessage(LAYOUT_WAIT_UNTIL_DONE).sendToTarget(); 337 } 338 339 public void dumpDatabaseCallbacks() { 340 obtainMessage(LAYOUT_DUMP_DATABASE_CALLBACKS).sendToTarget(); 341 } 342 343 public void clearAllDatabases() { 344 WebStorage.getInstance().deleteAllDatabases(); 345 } 346 347 public void setDatabaseQuota(long quota) { 348 WebStorage.getInstance().setQuotaForOrigin("file://", quota); 349 } 350 351 public void setCanOpenWindows() { 352 obtainMessage(LAYOUT_SET_CAN_OPEN_WINDOWS).sendToTarget(); 353 } 354 355} 356