Sat, 03 Jan 2015 20:18:00 +0100
Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.
michael@0 | 1 | /* -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 8 -*- */ |
michael@0 | 2 | /* vim: set sw=4 ts=8 et tw=80 ft=cpp : */ |
michael@0 | 3 | |
michael@0 | 4 | /* This Source Code Form is subject to the terms of the Mozilla Public |
michael@0 | 5 | * License, v. 2.0. If a copy of the MPL was not distributed with this |
michael@0 | 6 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
michael@0 | 7 | |
michael@0 | 8 | include protocol PBlob; |
michael@0 | 9 | include protocol PColorPicker; |
michael@0 | 10 | include protocol PContent; |
michael@0 | 11 | include protocol PDocumentRenderer; |
michael@0 | 12 | include protocol PContentPermissionRequest; |
michael@0 | 13 | include protocol PFilePicker; |
michael@0 | 14 | include protocol PRenderFrame; |
michael@0 | 15 | include protocol POfflineCacheUpdate; |
michael@0 | 16 | include protocol PIndexedDB; |
michael@0 | 17 | include DOMTypes; |
michael@0 | 18 | include JavaScriptTypes; |
michael@0 | 19 | include URIParams; |
michael@0 | 20 | include PContentPermission; |
michael@0 | 21 | |
michael@0 | 22 | |
michael@0 | 23 | using class IPC::Principal from "mozilla/dom/PermissionMessageUtils.h"; |
michael@0 | 24 | using struct mozilla::gfx::Matrix from "mozilla/gfx/Matrix.h"; |
michael@0 | 25 | using struct gfxSize from "gfxPoint.h"; |
michael@0 | 26 | using CSSRect from "Units.h"; |
michael@0 | 27 | using struct mozilla::layers::FrameMetrics from "FrameMetrics.h"; |
michael@0 | 28 | using struct mozilla::layers::ScrollableLayerGuid from "FrameMetrics.h"; |
michael@0 | 29 | using struct mozilla::layers::ZoomConstraints from "FrameMetrics.h"; |
michael@0 | 30 | using FrameMetrics::ViewID from "FrameMetrics.h"; |
michael@0 | 31 | using mozilla::layout::ScrollingBehavior from "mozilla/layout/RenderFrameUtils.h"; |
michael@0 | 32 | using struct mozilla::void_t from "ipc/IPCMessageUtils.h"; |
michael@0 | 33 | using mozilla::WindowsHandle from "ipc/IPCMessageUtils.h"; |
michael@0 | 34 | using nscolor from "nsColor.h"; |
michael@0 | 35 | using class mozilla::WidgetCompositionEvent from "ipc/nsGUIEventIPC.h"; |
michael@0 | 36 | using struct nsIMEUpdatePreference from "nsIWidget.h"; |
michael@0 | 37 | using struct nsIntPoint from "nsPoint.h"; |
michael@0 | 38 | using struct nsIntRect from "nsRect.h"; |
michael@0 | 39 | using struct nsIntSize from "nsSize.h"; |
michael@0 | 40 | using class mozilla::WidgetKeyboardEvent from "ipc/nsGUIEventIPC.h"; |
michael@0 | 41 | using class mozilla::WidgetMouseEvent from "ipc/nsGUIEventIPC.h"; |
michael@0 | 42 | using class mozilla::WidgetWheelEvent from "ipc/nsGUIEventIPC.h"; |
michael@0 | 43 | using struct nsRect from "nsRect.h"; |
michael@0 | 44 | using class mozilla::WidgetSelectionEvent from "ipc/nsGUIEventIPC.h"; |
michael@0 | 45 | using class mozilla::WidgetTextEvent from "ipc/nsGUIEventIPC.h"; |
michael@0 | 46 | using class mozilla::WidgetTouchEvent from "ipc/nsGUIEventIPC.h"; |
michael@0 | 47 | using struct mozilla::dom::RemoteDOMEvent from "mozilla/dom/TabMessageUtils.h"; |
michael@0 | 48 | using mozilla::dom::ScreenOrientation from "mozilla/dom/ScreenOrientation.h"; |
michael@0 | 49 | using struct mozilla::layers::TextureFactoryIdentifier from "mozilla/layers/CompositorTypes.h"; |
michael@0 | 50 | using mozilla::CSSPoint from "Units.h"; |
michael@0 | 51 | using mozilla::CSSToScreenScale from "Units.h"; |
michael@0 | 52 | using mozilla::CommandInt from "mozilla/EventForwards.h"; |
michael@0 | 53 | using mozilla::layers::GeckoContentController::APZStateChange from "mozilla/layers/GeckoContentController.h"; |
michael@0 | 54 | |
michael@0 | 55 | namespace mozilla { |
michael@0 | 56 | namespace dom { |
michael@0 | 57 | |
michael@0 | 58 | struct NativeKeyBinding |
michael@0 | 59 | { |
michael@0 | 60 | CommandInt[] singleLineCommands; |
michael@0 | 61 | CommandInt[] multiLineCommands; |
michael@0 | 62 | CommandInt[] richTextCommands; |
michael@0 | 63 | }; |
michael@0 | 64 | |
michael@0 | 65 | union MaybeNativeKeyBinding |
michael@0 | 66 | { |
michael@0 | 67 | NativeKeyBinding; |
michael@0 | 68 | void_t; |
michael@0 | 69 | }; |
michael@0 | 70 | |
michael@0 | 71 | intr protocol PBrowser |
michael@0 | 72 | { |
michael@0 | 73 | manager PContent; |
michael@0 | 74 | |
michael@0 | 75 | manages PColorPicker; |
michael@0 | 76 | manages PDocumentRenderer; |
michael@0 | 77 | manages PContentPermissionRequest; |
michael@0 | 78 | manages PFilePicker; |
michael@0 | 79 | manages PRenderFrame; |
michael@0 | 80 | manages POfflineCacheUpdate; |
michael@0 | 81 | manages PIndexedDB; |
michael@0 | 82 | |
michael@0 | 83 | both: |
michael@0 | 84 | AsyncMessage(nsString aMessage, ClonedMessageData aData, CpowEntry[] aCpows, |
michael@0 | 85 | Principal aPrincipal); |
michael@0 | 86 | |
michael@0 | 87 | parent: |
michael@0 | 88 | /** |
michael@0 | 89 | * When child sends this message, parent should move focus to |
michael@0 | 90 | * the next or previous focusable element. |
michael@0 | 91 | */ |
michael@0 | 92 | MoveFocus(bool forward); |
michael@0 | 93 | |
michael@0 | 94 | Event(RemoteDOMEvent aEvent); |
michael@0 | 95 | |
michael@0 | 96 | intr CreateWindow() returns (PBrowser window); |
michael@0 | 97 | |
michael@0 | 98 | sync SyncMessage(nsString aMessage, ClonedMessageData aData, |
michael@0 | 99 | CpowEntry[] aCpows, Principal aPrincipal) |
michael@0 | 100 | returns (nsString[] retval); |
michael@0 | 101 | |
michael@0 | 102 | rpc RpcMessage(nsString aMessage, ClonedMessageData aData, |
michael@0 | 103 | CpowEntry[] aCpows, Principal aPrincipal) |
michael@0 | 104 | returns (nsString[] retval); |
michael@0 | 105 | |
michael@0 | 106 | /** |
michael@0 | 107 | * The IME sequence number (seqno) parameter is used to make sure |
michael@0 | 108 | * that a notification is discarded if it arrives at the chrome process |
michael@0 | 109 | * too late. If the notification is late and we accept it, we will have |
michael@0 | 110 | * an out-of-date view of the content process, which means events that we |
michael@0 | 111 | * dispatch based on this out-of-date view will be wrong also. |
michael@0 | 112 | * (see Bug 599550 and Bug 591047 comments 44, 50, and 54) |
michael@0 | 113 | * |
michael@0 | 114 | * Chrome increments seqno and includes it in each IME event sent to |
michael@0 | 115 | * content, and content sends its current seqno back to chrome with each |
michael@0 | 116 | * notification. A notification is up-to-date only if the content |
michael@0 | 117 | * seqno is the same as the current chrome seqno, meaning no additional |
michael@0 | 118 | * event was sent to content before the notification was received |
michael@0 | 119 | * |
michael@0 | 120 | * On blur, chrome returns the current seqno to content, and content |
michael@0 | 121 | * uses it to discard subsequent events until the content seqno and |
michael@0 | 122 | * chrome seqno-on-blur match again. These events, meant for the blurred |
michael@0 | 123 | * textfield, are discarded to prevent events going to the wrong target |
michael@0 | 124 | */ |
michael@0 | 125 | |
michael@0 | 126 | /** |
michael@0 | 127 | * Notifies chrome that there is a focus change involving an editable |
michael@0 | 128 | * object (input, textarea, document, contentEditable. etc.) |
michael@0 | 129 | * |
michael@0 | 130 | * focus PR_TRUE if editable object is receiving focus |
michael@0 | 131 | * PR_FALSE if losing focus |
michael@0 | 132 | * preference Native widget preference for IME updates |
michael@0 | 133 | * seqno Current seqno value on the chrome side |
michael@0 | 134 | */ |
michael@0 | 135 | sync NotifyIMEFocus(bool focus) |
michael@0 | 136 | returns (nsIMEUpdatePreference preference, uint32_t seqno); |
michael@0 | 137 | |
michael@0 | 138 | /** |
michael@0 | 139 | * Notifies chrome that there has been a change in text content |
michael@0 | 140 | * One call can encompass both a delete and an insert operation |
michael@0 | 141 | * Only called when NotifyIMEFocus returns PR_TRUE for mWantUpdates |
michael@0 | 142 | * |
michael@0 | 143 | * offset Starting offset of the change |
michael@0 | 144 | * end Ending offset of the range deleted |
michael@0 | 145 | * newEnd New ending offset after insertion |
michael@0 | 146 | * causedByComposition true if the change is caused by composition |
michael@0 | 147 | * |
michael@0 | 148 | * for insertion, offset == end |
michael@0 | 149 | * for deletion, offset == newEnd |
michael@0 | 150 | */ |
michael@0 | 151 | NotifyIMETextChange(uint32_t offset, uint32_t end, uint32_t newEnd, |
michael@0 | 152 | bool causedByComposition); |
michael@0 | 153 | |
michael@0 | 154 | /** |
michael@0 | 155 | * Notifies chrome that there is a IME compostion rect updated |
michael@0 | 156 | * |
michael@0 | 157 | * offset The starting offset of this rect |
michael@0 | 158 | * rect The rect of first character of selected IME composition |
michael@0 | 159 | * caretRect The rect of IME caret |
michael@0 | 160 | */ |
michael@0 | 161 | NotifyIMESelectedCompositionRect(uint32_t offset, nsIntRect rect, nsIntRect caretRect); |
michael@0 | 162 | |
michael@0 | 163 | /** |
michael@0 | 164 | * Notifies chrome that there has been a change in selection |
michael@0 | 165 | * Only called when NotifyIMEFocus returns PR_TRUE for mWantUpdates |
michael@0 | 166 | * |
michael@0 | 167 | * seqno Current seqno value on the content side |
michael@0 | 168 | * anchor Offset where the selection started |
michael@0 | 169 | * focus Offset where the caret is |
michael@0 | 170 | * causedByComposition true if the change is caused by composition |
michael@0 | 171 | */ |
michael@0 | 172 | NotifyIMESelection(uint32_t seqno, uint32_t anchor, uint32_t focus, |
michael@0 | 173 | bool causedByComposition); |
michael@0 | 174 | |
michael@0 | 175 | /** |
michael@0 | 176 | * Notifies chrome to refresh its text cache |
michael@0 | 177 | * |
michael@0 | 178 | * text The entire content of the text field |
michael@0 | 179 | */ |
michael@0 | 180 | NotifyIMETextHint(nsString text); |
michael@0 | 181 | |
michael@0 | 182 | /** |
michael@0 | 183 | * Instructs chrome to end any pending composition |
michael@0 | 184 | * |
michael@0 | 185 | * cancel PR_TRUE if composition should be cancelled |
michael@0 | 186 | * composition Text to commit before ending the composition |
michael@0 | 187 | * |
michael@0 | 188 | * if cancel is PR_TRUE, |
michael@0 | 189 | * widget should return empty string for composition |
michael@0 | 190 | * if cancel is PR_FALSE, |
michael@0 | 191 | * widget should return the current composition text |
michael@0 | 192 | */ |
michael@0 | 193 | sync EndIMEComposition(bool cancel) returns (nsString composition); |
michael@0 | 194 | |
michael@0 | 195 | /** |
michael@0 | 196 | * Request that the parent process move focus to the browser's frame. If |
michael@0 | 197 | * canRaise is true, the window can be raised if it is inactive. |
michael@0 | 198 | */ |
michael@0 | 199 | RequestFocus(bool canRaise); |
michael@0 | 200 | |
michael@0 | 201 | sync GetInputContext() returns (int32_t IMEEnabled, int32_t IMEOpen, |
michael@0 | 202 | intptr_t NativeIMEContext); |
michael@0 | 203 | |
michael@0 | 204 | SetInputContext(int32_t IMEEnabled, |
michael@0 | 205 | int32_t IMEOpen, |
michael@0 | 206 | nsString type, |
michael@0 | 207 | nsString inputmode, |
michael@0 | 208 | nsString actionHint, |
michael@0 | 209 | int32_t cause, |
michael@0 | 210 | int32_t focusChange); |
michael@0 | 211 | |
michael@0 | 212 | sync IsParentWindowMainWidgetVisible() returns (bool visible); |
michael@0 | 213 | |
michael@0 | 214 | /** |
michael@0 | 215 | * Gets the DPI of the screen corresponding to this browser. |
michael@0 | 216 | */ |
michael@0 | 217 | sync GetDPI() returns (float value); |
michael@0 | 218 | |
michael@0 | 219 | /** |
michael@0 | 220 | * Gets the default scaling factor of the screen corresponding to this browser. |
michael@0 | 221 | */ |
michael@0 | 222 | sync GetDefaultScale() returns (double value); |
michael@0 | 223 | |
michael@0 | 224 | /** |
michael@0 | 225 | * Return native data of root widget |
michael@0 | 226 | */ |
michael@0 | 227 | sync GetWidgetNativeData() returns (WindowsHandle value); |
michael@0 | 228 | |
michael@0 | 229 | SetCursor(uint32_t value); |
michael@0 | 230 | SetBackgroundColor(nscolor color); |
michael@0 | 231 | |
michael@0 | 232 | /** |
michael@0 | 233 | * Used to set the current text of the status tooltip. |
michael@0 | 234 | * Nowadays this is mainly used for link locations on hover. |
michael@0 | 235 | */ |
michael@0 | 236 | SetStatus(uint32_t type, nsString status); |
michael@0 | 237 | |
michael@0 | 238 | /** |
michael@0 | 239 | * Show/hide a tooltip when the mouse hovers over an element in the content |
michael@0 | 240 | * document. |
michael@0 | 241 | */ |
michael@0 | 242 | ShowTooltip(uint32_t x, uint32_t y, nsString tooltip); |
michael@0 | 243 | HideTooltip(); |
michael@0 | 244 | |
michael@0 | 245 | /** |
michael@0 | 246 | * Create an asynchronous color picker on the parent side, |
michael@0 | 247 | * but don't open it yet. |
michael@0 | 248 | */ |
michael@0 | 249 | PColorPicker(nsString title, nsString initialColor); |
michael@0 | 250 | |
michael@0 | 251 | /** |
michael@0 | 252 | * Initiates an asynchronous request for permission for the |
michael@0 | 253 | * provided principal. |
michael@0 | 254 | * |
michael@0 | 255 | * @param aRequests |
michael@0 | 256 | * The array of permissions to request. |
michael@0 | 257 | * @param aPrincipal |
michael@0 | 258 | * The principal of the request. |
michael@0 | 259 | * |
michael@0 | 260 | * NOTE: The principal is untrusted in the parent process. Only |
michael@0 | 261 | * principals that can live in the content process should |
michael@0 | 262 | * provided. |
michael@0 | 263 | */ |
michael@0 | 264 | PContentPermissionRequest(PermissionRequest[] aRequests, Principal aPrincipal); |
michael@0 | 265 | |
michael@0 | 266 | PFilePicker(nsString aTitle, int16_t aMode); |
michael@0 | 267 | |
michael@0 | 268 | /** |
michael@0 | 269 | * Create a layout frame (encapsulating a remote layer tree) for |
michael@0 | 270 | * the page that is currently loaded in the <browser>. |
michael@0 | 271 | */ |
michael@0 | 272 | sync PRenderFrame(); |
michael@0 | 273 | |
michael@0 | 274 | sync InitRenderFrame(PRenderFrame aFrame) |
michael@0 | 275 | returns (ScrollingBehavior scrolling, |
michael@0 | 276 | TextureFactoryIdentifier textureFactoryIdentifier, uint64_t layersId, |
michael@0 | 277 | bool success); |
michael@0 | 278 | |
michael@0 | 279 | /** |
michael@0 | 280 | * Starts an offline application cache update. |
michael@0 | 281 | * @param manifestURI |
michael@0 | 282 | * URI of the manifest to fetch, the application cache group ID |
michael@0 | 283 | * @param documentURI |
michael@0 | 284 | * URI of the document that referred the manifest |
michael@0 | 285 | * @param stickDocument |
michael@0 | 286 | * True if the update was initiated by a document load that referred |
michael@0 | 287 | * a manifest. |
michael@0 | 288 | * False if the update was initiated by applicationCache.update() call. |
michael@0 | 289 | * |
michael@0 | 290 | * Tells the update to carry the documentURI to a potential separate |
michael@0 | 291 | * update of implicit (master) items. |
michael@0 | 292 | * |
michael@0 | 293 | * Why this argument? If the document was not found in an offline cache |
michael@0 | 294 | * before load and refers a manifest and this manifest itself has not |
michael@0 | 295 | * been changed since the last fetch, we will not do the application |
michael@0 | 296 | * cache group update. But we must cache the document (identified by the |
michael@0 | 297 | * documentURI). This argument will ensure that a previously uncached |
michael@0 | 298 | * document will get cached and that we don't re-cache a document that |
michael@0 | 299 | * has already been cached (stickDocument=false). |
michael@0 | 300 | */ |
michael@0 | 301 | POfflineCacheUpdate(URIParams manifestURI, URIParams documentURI, |
michael@0 | 302 | bool stickDocument); |
michael@0 | 303 | |
michael@0 | 304 | /** |
michael@0 | 305 | * Sets "offline-app" permission for the principal. Called when we hit |
michael@0 | 306 | * a web app with the manifest attribute in <html> and |
michael@0 | 307 | * offline-apps.allow_by_default is set to true. |
michael@0 | 308 | */ |
michael@0 | 309 | SetOfflinePermission(Principal principal); |
michael@0 | 310 | |
michael@0 | 311 | sync PIndexedDB(nsCString group, nsCString asciiOrigin) |
michael@0 | 312 | returns (bool allowed); |
michael@0 | 313 | |
michael@0 | 314 | /** |
michael@0 | 315 | * window.open from inside <iframe mozbrowser> is special. When the child |
michael@0 | 316 | * process calls window.open, it creates a new PBrowser (in its own |
michael@0 | 317 | * process), then calls BrowserFrameOpenWindow on it. |
michael@0 | 318 | * |
michael@0 | 319 | * The parent process gets a chance to accept or reject the window.open |
michael@0 | 320 | * call, and windowOpened is set to true if we ended up going through with |
michael@0 | 321 | * the window.open. |
michael@0 | 322 | * |
michael@0 | 323 | * @param opener the PBrowser whose content called window.open. |
michael@0 | 324 | */ |
michael@0 | 325 | sync BrowserFrameOpenWindow(PBrowser opener, nsString aURL, |
michael@0 | 326 | nsString aName, nsString aFeatures) |
michael@0 | 327 | returns (bool windowOpened); |
michael@0 | 328 | |
michael@0 | 329 | /** |
michael@0 | 330 | * Instructs the TabParent to forward a request to zoom to a rect given in |
michael@0 | 331 | * CSS pixels. This rect is relative to the document. |
michael@0 | 332 | */ |
michael@0 | 333 | ZoomToRect(uint32_t aPresShellId, ViewID aViewId, CSSRect aRect); |
michael@0 | 334 | |
michael@0 | 335 | /** |
michael@0 | 336 | * We know for sure that content has either preventDefaulted or not |
michael@0 | 337 | * preventDefaulted. This applies to an entire batch of touch events. It is |
michael@0 | 338 | * expected that, if there are any DOM touch listeners, touch events will be |
michael@0 | 339 | * batched and only processed for panning and zooming if content does not |
michael@0 | 340 | * preventDefault. |
michael@0 | 341 | */ |
michael@0 | 342 | ContentReceivedTouch(ScrollableLayerGuid aGuid, bool aPreventDefault); |
michael@0 | 343 | |
michael@0 | 344 | /** |
michael@0 | 345 | * Updates the zoom constraints for a scrollable frame in this tab. |
michael@0 | 346 | * The zoom controller code lives on the parent side and so this allows it to |
michael@0 | 347 | * have up-to-date zoom constraints. |
michael@0 | 348 | */ |
michael@0 | 349 | UpdateZoomConstraints(uint32_t aPresShellId, ViewID aViewId, bool aIsRoot, |
michael@0 | 350 | ZoomConstraints aConstraints); |
michael@0 | 351 | |
michael@0 | 352 | __delete__(); |
michael@0 | 353 | |
michael@0 | 354 | ReplyKeyEvent(WidgetKeyboardEvent event); |
michael@0 | 355 | |
michael@0 | 356 | sync RequestNativeKeyBindings(WidgetKeyboardEvent event) |
michael@0 | 357 | returns (MaybeNativeKeyBinding bindings); |
michael@0 | 358 | |
michael@0 | 359 | child: |
michael@0 | 360 | /** |
michael@0 | 361 | * Notify the remote browser that it has been Show()n on this |
michael@0 | 362 | * side, with the given |visibleRect|. This message is expected |
michael@0 | 363 | * to trigger creation of the remote browser's "widget". |
michael@0 | 364 | * |
michael@0 | 365 | * |Show()| and |Move()| take IntSizes rather than Rects because |
michael@0 | 366 | * content processes always render to a virtual <0, 0> top-left |
michael@0 | 367 | * point. |
michael@0 | 368 | */ |
michael@0 | 369 | Show(nsIntSize size); |
michael@0 | 370 | |
michael@0 | 371 | LoadURL(nsCString uri); |
michael@0 | 372 | |
michael@0 | 373 | CacheFileDescriptor(nsString path, FileDescriptor fd); |
michael@0 | 374 | |
michael@0 | 375 | UpdateDimensions(nsRect rect, nsIntSize size, ScreenOrientation orientation) compress; |
michael@0 | 376 | |
michael@0 | 377 | UpdateFrame(FrameMetrics frame); |
michael@0 | 378 | |
michael@0 | 379 | /** |
michael@0 | 380 | * Acknowledge the receipt of a scroll offset update from the content |
michael@0 | 381 | * process. This is used to manage concurrent scroll updates from many |
michael@0 | 382 | * sources. |
michael@0 | 383 | */ |
michael@0 | 384 | AcknowledgeScrollUpdate(ViewID aScrollId, uint32_t aScrollGeneration); |
michael@0 | 385 | |
michael@0 | 386 | /** |
michael@0 | 387 | * Requests handling of a double tap. |point| is in CSS pixels, relative to |
michael@0 | 388 | * the scroll offset. This message is expected to round-trip back to |
michael@0 | 389 | * ZoomToRect() with a rect indicating where we should zoom to. |
michael@0 | 390 | */ |
michael@0 | 391 | HandleDoubleTap(CSSPoint point, ScrollableLayerGuid aGuid); |
michael@0 | 392 | |
michael@0 | 393 | /** |
michael@0 | 394 | * Requests handling of a single tap. |point| is in CSS pixels, relative to |
michael@0 | 395 | * the scroll offset. This message is expected to send a "mousedown" and |
michael@0 | 396 | * "mouseup" series of events at this point. |
michael@0 | 397 | */ |
michael@0 | 398 | HandleSingleTap(CSSPoint point, ScrollableLayerGuid aGuid); |
michael@0 | 399 | |
michael@0 | 400 | /** |
michael@0 | 401 | * Requests handling of a long tap. |point| is in CSS pixels, relative to |
michael@0 | 402 | * the scroll offset. This message is expected to send a "contextmenu" |
michael@0 | 403 | * events at this point. |
michael@0 | 404 | */ |
michael@0 | 405 | HandleLongTap(CSSPoint point, ScrollableLayerGuid aGuid); |
michael@0 | 406 | |
michael@0 | 407 | /** |
michael@0 | 408 | * Requests handling of releasing a long tap. |aPoint| is in CSS pixels, |
michael@0 | 409 | * relative to the current scroll offset. In the case the "contextmenu" |
michael@0 | 410 | * event generated by the preceding HandleLongTap call was not handled, |
michael@0 | 411 | * this message is expected to generate a "mousedown" and "mouseup" |
michael@0 | 412 | * series of events |
michael@0 | 413 | */ |
michael@0 | 414 | HandleLongTapUp(CSSPoint point, ScrollableLayerGuid aGuid); |
michael@0 | 415 | |
michael@0 | 416 | /** |
michael@0 | 417 | * Notifies the child about various APZ state changes. |
michael@0 | 418 | * See GeckoContentController::NotifyAPZStateChange() for details. |
michael@0 | 419 | */ |
michael@0 | 420 | NotifyAPZStateChange(ViewID aViewId, APZStateChange aChange, int aArg); |
michael@0 | 421 | |
michael@0 | 422 | /** |
michael@0 | 423 | * Sending an activate message moves focus to the child. |
michael@0 | 424 | */ |
michael@0 | 425 | Activate(); |
michael@0 | 426 | |
michael@0 | 427 | Deactivate(); |
michael@0 | 428 | |
michael@0 | 429 | /** |
michael@0 | 430 | * @see nsIDOMWindowUtils sendMouseEvent. |
michael@0 | 431 | */ |
michael@0 | 432 | MouseEvent(nsString aType, |
michael@0 | 433 | float aX, |
michael@0 | 434 | float aY, |
michael@0 | 435 | int32_t aButton, |
michael@0 | 436 | int32_t aClickCount, |
michael@0 | 437 | int32_t aModifiers, |
michael@0 | 438 | bool aIgnoreRootScrollFrame); |
michael@0 | 439 | |
michael@0 | 440 | RealMouseEvent(WidgetMouseEvent event); |
michael@0 | 441 | RealKeyEvent(WidgetKeyboardEvent event, MaybeNativeKeyBinding keyBinding); |
michael@0 | 442 | MouseWheelEvent(WidgetWheelEvent event); |
michael@0 | 443 | RealTouchEvent(WidgetTouchEvent aEvent, ScrollableLayerGuid aGuid); |
michael@0 | 444 | // We use a separate message for touchmove events only to apply |
michael@0 | 445 | // compression to them. |
michael@0 | 446 | RealTouchMoveEvent(WidgetTouchEvent aEvent, ScrollableLayerGuid aGuid) compress; |
michael@0 | 447 | |
michael@0 | 448 | /** |
michael@0 | 449 | * @see nsIDOMWindowUtils sendKeyEvent. |
michael@0 | 450 | */ |
michael@0 | 451 | KeyEvent(nsString aType, |
michael@0 | 452 | int32_t aKeyCode, |
michael@0 | 453 | int32_t aCharCode, |
michael@0 | 454 | int32_t aModifiers, |
michael@0 | 455 | bool aPreventDefault); |
michael@0 | 456 | |
michael@0 | 457 | CompositionEvent(WidgetCompositionEvent event); |
michael@0 | 458 | |
michael@0 | 459 | TextEvent(WidgetTextEvent event); |
michael@0 | 460 | |
michael@0 | 461 | SelectionEvent(WidgetSelectionEvent event); |
michael@0 | 462 | |
michael@0 | 463 | /** |
michael@0 | 464 | * Activate event forwarding from client to parent. |
michael@0 | 465 | */ |
michael@0 | 466 | ActivateFrameEvent(nsString aType, bool capture); |
michael@0 | 467 | |
michael@0 | 468 | LoadRemoteScript(nsString aURL, bool aRunInGlobalScope); |
michael@0 | 469 | |
michael@0 | 470 | /** |
michael@0 | 471 | * Create a asynchronous request to render whatever document is |
michael@0 | 472 | * loaded in the child when this message arrives. When the |
michael@0 | 473 | * request finishes, PDocumentRenderer:__delete__ is sent back to |
michael@0 | 474 | * this side to notify completion. |
michael@0 | 475 | * |
michael@0 | 476 | * |documentRect| is the area of the remote document to draw, |
michael@0 | 477 | * transformed by |transform|. The rendered area will have the |
michael@0 | 478 | * default background color |bgcolor|. |renderFlags| are the |
michael@0 | 479 | * nsIPresShell::RenderDocument() flags to use on the remote side, |
michael@0 | 480 | * and if true, |flushLayout| will do just that before rendering |
michael@0 | 481 | * the document. The rendered image will be of size |renderSize|. |
michael@0 | 482 | */ |
michael@0 | 483 | PDocumentRenderer(nsRect documentRect, Matrix transform, |
michael@0 | 484 | nsString bgcolor, |
michael@0 | 485 | uint32_t renderFlags, bool flushLayout, |
michael@0 | 486 | nsIntSize renderSize); |
michael@0 | 487 | |
michael@0 | 488 | /** |
michael@0 | 489 | * Sent by the chrome process when it no longer wants this remote |
michael@0 | 490 | * <browser>. The child side cleans up in response, then |
michael@0 | 491 | * finalizing its death by sending back __delete__() to the |
michael@0 | 492 | * parent. |
michael@0 | 493 | */ |
michael@0 | 494 | Destroy(); |
michael@0 | 495 | |
michael@0 | 496 | |
michael@0 | 497 | /** |
michael@0 | 498 | * Tell the child side if it has to update it's touchable region |
michael@0 | 499 | * to the parent. |
michael@0 | 500 | */ |
michael@0 | 501 | SetUpdateHitRegion(bool aEnabled); |
michael@0 | 502 | |
michael@0 | 503 | /** |
michael@0 | 504 | * Tell the child to update its docShell's active state. |
michael@0 | 505 | */ |
michael@0 | 506 | SetIsDocShellActive(bool aIsActive); |
michael@0 | 507 | |
michael@0 | 508 | /* |
michael@0 | 509 | * FIXME: write protocol! |
michael@0 | 510 | |
michael@0 | 511 | state LIVE: |
michael@0 | 512 | send LoadURL goto LIVE; |
michael@0 | 513 | //etc. |
michael@0 | 514 | send Destroy goto DYING; |
michael@0 | 515 | |
michael@0 | 516 | state DYING: |
michael@0 | 517 | discard send blah; |
michael@0 | 518 | // etc. |
michael@0 | 519 | recv __delete__; |
michael@0 | 520 | */ |
michael@0 | 521 | }; |
michael@0 | 522 | |
michael@0 | 523 | } |
michael@0 | 524 | } |