• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Defines the IPC messages used by the automation interface.
6 
7 #include <string>
8 #include <vector>
9 
10 #include "base/string16.h"
11 #include "chrome/common/content_settings.h"
12 #include "chrome/test/automation/autocomplete_edit_proxy.h"
13 #include "content/common/navigation_types.h"
14 #include "googleurl/src/gurl.h"
15 #include "ipc/ipc_message_macros.h"
16 #include "net/url_request/url_request_status.h"
17 #include "ui/gfx/rect.h"
18 #include "webkit/glue/window_open_disposition.h"
19 
20 
21 // NOTE: All IPC messages have either a routing_id of 0 (for asynchronous
22 //       messages), or one that's been assigned by the proxy (for calls
23 //       which expect a response).  The routing_id shouldn't be used for
24 //       any other purpose in these message types.
25 
26 // NOTE: All the new IPC messages should go at the end.
27 //       The IPC message IDs need to match the reference builds.  Since we now
28 //       define the IDs based on __LINE__, to allow these IPC messages to be
29 //       used to control an old version of Chrome we need the message IDs to
30 //       remain the same.  This means that you should not change the line number
31 //       of any of the messages below.  This will be fixed once Xcode supports
32 //       __COUNTER__, in which case we can get rid of the __LINE__.
33 
34 #define IPC_MESSAGE_START AutomationMsgStart
35 
36 // This message is fired when the AutomationProvider is up and running
37 // in the app (the app is not fully up at this point). The parameter to this
38 // message is the version string of the automation provider. This parameter
39 // is defined to be the version string as returned by
40 // chrome::VersionInfo::Version().
41 // The client can choose to use this version string to decide whether or not
42 // it can talk to the provider.
43 IPC_MESSAGE_CONTROL1(AutomationMsg_Hello,
44                      std::string)
45 
46 // This message is fired when the initial tab(s) are finished loading.
47 IPC_MESSAGE_CONTROL0(AutomationMsg_InitialLoadsComplete)
48 
49 // This message notifies the AutomationProvider to append a new tab the
50 // window with the given handle. The return value contains the index of
51 // the new tab, or -1 if the request failed.
52 // The second parameter is the url to be loaded in the new tab.
53 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_AppendTab,
54                             int,
55                             GURL,
56                             int)
57 
58 // This message requests the (zero-based) index for the currently
59 // active tab in the window with the given handle. The return value contains
60 // the index of the active tab, or -1 if the request failed.
61 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_ActiveTabIndex,
62                             int,
63                             int)
64 
65 // This message notifies the AutomationProvider to active the tab.
66 // The first parameter is the handle to window resource.
67 // The second parameter is the (zero-based) index to be activated
68 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_ActivateTab,
69                             int,
70                             int,
71                             int)
72 
73 // This message requests the cookie value for given url in the
74 // profile of the tab identified by the second parameter.  The first
75 // parameter is the URL string. The response contains the length of the
76 // cookie value string. On failure, this length = -1.
77 IPC_SYNC_MESSAGE_CONTROL2_2(AutomationMsg_GetCookies,
78                             GURL,
79                             int,
80                             int,
81                             std::string)
82 
83 // This message notifies the AutomationProvider to set and broadcast a cookie
84 // with given name and value for the given url in the profile of the tab
85 // identified by the third parameter. The first parameter is the URL
86 // string, and the second parameter is the cookie name and value to be set.
87 // The return value is a non-negative value on success.
88 IPC_SYNC_MESSAGE_CONTROL3_1(AutomationMsg_SetCookie,
89                             GURL,
90                             std::string,
91                             int,
92                             int)
93 
94 // This message is used to implement the asynchronous version of
95 // NavigateToURL.
96 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_NavigationAsync,
97                             int /* tab handle */,
98                             GURL,
99                             bool /* result */)
100 
101 // This message requests the number of browser windows that the app currently
102 // has open.  The return value is the number of windows.
103 IPC_SYNC_MESSAGE_CONTROL0_1(AutomationMsg_BrowserWindowCount,
104                             int)
105 
106 // This message requests the handle (int64 app-unique identifier) of the
107 // window with the given (zero-based) index.  On error, the returned handle
108 // value is 0.
109 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_BrowserWindow,
110                             int,
111                             int)
112 
113 // This message requests the number of tabs in the window with the given
114 // handle.  The return value contains the number of tabs, or -1 if the
115 // request failed.
116 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_TabCount,
117                             int,
118                             int)
119 
120 // This message requests the handle of the tab with the given (zero-based)
121 // index in the given app window. First parameter specifies the given window
122 // handle, second specifies the given tab_index. On error, the returned handle
123 // value is 0.
124 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_Tab,
125                             int,
126                             int,
127                             int)
128 
129 // This message requests the the title of the tab with the given handle.
130 // The return value contains the size of the title string. On error, this
131 // value should be -1 and empty string. Note that the title can be empty in
132 // which case the size would be 0.
133 IPC_SYNC_MESSAGE_CONTROL1_2(AutomationMsg_TabTitle,
134                             int,
135                             int,
136                             std::wstring)
137 
138 // This message requests the url of the tab with the given handle.
139 // The return value contains a success flag and the URL string. The URL will
140 // be empty on failure, and it still may be empty on success.
141 IPC_SYNC_MESSAGE_CONTROL1_2(AutomationMsg_TabURL,
142                             int /* tab handle */,
143                             bool /* success flag */,
144                             GURL)
145 
146 // This message notifies the AutomationProxy that a handle that it has
147 // previously been given is now invalid.  (For instance, if the handle
148 // represented a window which has now been closed.)  The parameter
149 // value is the handle.
150 IPC_MESSAGE_CONTROL1(AutomationMsg_InvalidateHandle,
151                      int)
152 
153 // This message notifies the AutomationProvider that a handle is no
154 // longer being used, so it can stop paying attention to the
155 // associated resource.  The parameter value is the handle.
156 IPC_MESSAGE_CONTROL1(AutomationMsg_HandleUnused,
157                      int)
158 
159 // This message tells the AutomationProvider to provide the given
160 // authentication data to the specified tab, in response to an HTTP/FTP
161 // authentication challenge.
162 IPC_SYNC_MESSAGE_CONTROL3_1(AutomationMsg_SetAuth,
163                             int /* tab handle */,
164                             std::wstring /* username */,
165                             std::wstring /* password */,
166                             AutomationMsg_NavigationResponseValues /* status */)
167 
168 // This message tells the AutomationProvider to cancel the login in the
169 // specified tab.
170 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_CancelAuth,
171                             int /* tab handle */,
172                             AutomationMsg_NavigationResponseValues /* status */)
173 
174 // Requests that the automation provider ask history for the most recent
175 // chain of redirects coming from the given URL. The response must be
176 // decoded by the caller manually; it contains an integer indicating the
177 // number of URLs, followed by that many wstrings indicating a chain of
178 // redirects. On failure, the count will be negative.
179 IPC_SYNC_MESSAGE_CONTROL2_2(AutomationMsg_RedirectsFrom,
180                             int /* tab handle */,
181                             GURL /* source URL */,
182                             bool /* succeeded */,
183                             std::vector<GURL> /* redirects */)
184 
185 // This message asks the AutomationProvider whether a tab is waiting for
186 // login info.
187 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_NeedsAuth,
188                             int /* tab handle */,
189                             bool /* status */)
190 
191 // This message requests that the AutomationProvider executes a JavaScript,
192 // which is sent embedded in a 'javascript:' URL.
193 // The javascript is executed in context of child frame whose xpath
194 // is passed as parameter (context_frame). The execution results in
195 // a serialized JSON string response.
196 IPC_SYNC_MESSAGE_CONTROL3_1(AutomationMsg_DomOperation,
197                             int /* tab handle */,
198                             std::wstring /* context_frame */,
199                             std::wstring /* the javascript to be executed */,
200                             std::string /* the serialized json string containg
201                                            the result of a javascript
202                                            execution */)
203 
204 // Is the Download Shelf visible for the specified browser?
205 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_ShelfVisibility,
206                             int /* browser_handle */,
207                             bool /* is_visible */)
208 
209 // This message requests the number of constrained windows in the tab with
210 // the given handle.  The return value contains the number of constrained
211 // windows, or -1 if the request failed.
212 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_ConstrainedWindowCount,
213                             int /* tab_handle */,
214                             int /* constrained_window_count */)
215 
216 // This message requests the bounds of the specified View element in
217 // window coordinates.
218 // Request:
219 //   int - the handle of the window in which the view appears
220 //   int - the ID of the view, as specified in chrome/browser/ui/view_ids.h
221 //   bool - whether the bounds should be returned in the screen coordinates
222 //          (if true) or in the browser coordinates (if false).
223 // Response:
224 //   bool - true if the view was found
225 //   gfx::Rect - the bounds of the view, in window coordinates
226 IPC_SYNC_MESSAGE_CONTROL3_2(AutomationMsg_WindowViewBounds,
227                             int,
228                             int,
229                             bool,
230                             bool,
231                             gfx::Rect)
232 
233 // This message sets the bounds of the window.
234 // Request:
235 //   int - the handle of the window to resize
236 //   gfx::Rect - the bounds of the window
237 // Response:
238 //   bool - true if the resize was successful
239 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_SetWindowBounds,
240                             int,
241                             gfx::Rect,
242                             bool)
243 
244 // TODO(port): Port these messages.
245 //
246 // This message requests that a drag be performed in window coordinate space
247 // Request:
248 //   int - the handle of the window that's the context for this drag
249 //   std::vector<gfx::Point> - the path of the drag in window coordinate
250 //                             space; it should have at least 2 points
251 //                             (start and end)
252 //   int - the flags which identify the mouse button(s) for the drag, as
253 //         defined in chrome/views/event.h
254 // Response:
255 //   bool - true if the drag could be performed
256 IPC_SYNC_MESSAGE_CONTROL4_1(AutomationMsg_WindowDrag,
257                            int,
258                            std::vector<gfx::Point>,
259                            int,
260                            bool,
261                            bool)
262 
263 // Similar to AutomationMsg_InitialLoadsComplete, this indicates that the
264 // new tab ui has completed the initial load of its data.
265 // Time is how many milliseconds the load took.
266 IPC_MESSAGE_CONTROL1(AutomationMsg_InitialNewTabUILoadComplete,
267                     int /* time */)
268 
269 // This message sends a inspect element request for a given tab. The response
270 // contains the number of resources loaded by the inspector controller.
271 IPC_SYNC_MESSAGE_CONTROL3_1(AutomationMsg_InspectElement,
272                             int, /* tab_handle */
273                             int, /* x */
274                             int  /* y */,
275                             int)
276 
277 // This message requests the process ID of the tab that corresponds
278 // to the given automation handle.
279 // The return value has an integer corresponding to the PID of the tab's
280 // renderer, 0 if the tab currently has no renderer process, or -1 on error.
281 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_TabProcessID,
282                             int /* tab_handle */,
283                             int /* process ID */)
284 
285 // This tells the browser to enable or disable the filtered network layer.
286 IPC_MESSAGE_CONTROL1(AutomationMsg_SetFilteredInet,
287                      bool /* enabled */)
288 
289 // Gets the directory that downloads will occur in for the active profile.
290 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_DownloadDirectory,
291                             int /* tab_handle */,
292                             FilePath /* directory */)
293 
294 // This message requests the id of the view that has the focus in the
295 // specified window. If no view is focused, -1 is returned.  Note that the
296 // window should either be a ViewWindow or a Browser.
297 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_GetFocusedViewID,
298                             int /* view_handle */,
299                             int /* focused_view_id */)
300 
301 // This message shows/hides the window.
302 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_SetWindowVisible,
303                             int /* view_handle */,
304                             bool /* visible */,
305                             bool /* success */)
306 
307 // Gets the active status of a window.
308 IPC_SYNC_MESSAGE_CONTROL1_2(AutomationMsg_IsWindowActive,
309                             int /* view_handle */,
310                             bool /* success */,
311                             bool /* active */)
312 
313 // Makes the specified window the active window.
314 IPC_SYNC_MESSAGE_CONTROL1_0(AutomationMsg_ActivateWindow,
315                             int /* view_handle */)
316 
317 // Opens a new browser window.
318 // TODO(sky): remove this and replace with OpenNewBrowserWindowOfType.
319 // Doing this requires updating the reference build.
320 IPC_SYNC_MESSAGE_CONTROL1_0(AutomationMsg_OpenNewBrowserWindow,
321                             bool /* show */ )
322 
323 // This message requests the handle (int64 app-unique identifier) of the
324 // current active top window.  On error, the returned handle value is 0.
325 IPC_SYNC_MESSAGE_CONTROL0_1(AutomationMsg_ActiveWindow,
326                             int)
327 
328 // This message requests the browser associated with the specified window
329 // handle.
330 // The return value contains a success flag and the handle of the browser.
331 IPC_SYNC_MESSAGE_CONTROL1_2(AutomationMsg_BrowserForWindow,
332                             int /* window handle */,
333                             bool /* success flag */,
334                             int /* browser handle */)
335 
336 // This message requests the window associated with the specified browser
337 // handle.
338 // The return value contains a success flag and the handle of the window.
339 IPC_SYNC_MESSAGE_CONTROL1_2(AutomationMsg_WindowForBrowser,
340                             int /* browser handle */,
341                             bool /* success flag */,
342                             int /* window handle */)
343 
344 // This message requests the AutocompleteEdit associated with the specified
345 // browser handle.
346 // The return value contains a success flag and the handle of the omnibox.
347 IPC_SYNC_MESSAGE_CONTROL1_2(AutomationMsg_AutocompleteEditForBrowser,
348                             int /* browser handle */,
349                             bool /* success flag */,
350                             int /* AutocompleteEdit handle */)
351 
352 // This message requests that a mouse click be performed in window coordinate
353 // space.
354 // Request:
355 //   int - the handle of the window that's the context for this click
356 //   gfx::Point - the point to click
357 //   int - the flags which identify the mouse button(s) for the click, as
358 //       defined in chrome/views/event.h
359 IPC_MESSAGE_CONTROL3(AutomationMsg_WindowClick,
360                      int,
361                      gfx::Point,
362                      int)
363 
364 // This message requests that a key press be performed.
365 // Request:
366 //   int - the handle of the window that's the context for this click
367 //   int - the ui::KeyboardCode of the key that was pressed.
368 //   int - the flags which identify the modifiers (shift, ctrl, alt)
369 //         associated for, as defined in chrome/views/event.h
370 IPC_MESSAGE_CONTROL3(AutomationMsg_WindowKeyPress,
371                      int,
372                      int,
373                      int)
374 
375 // This message notifies the AutomationProvider to create a tab which is
376 // hosted by an external process.
377 // Request:
378 //   ExternalTabSettings - settings for external tab
379 IPC_SYNC_MESSAGE_CONTROL1_4(AutomationMsg_CreateExternalTab,
380                             ExternalTabSettings  /* settings*/,
381                             gfx::NativeWindow  /* Tab container window */,
382                             gfx::NativeWindow  /* Tab window */,
383                             int  /* Handle to the new tab */,
384                             int  /* Session Id of the new tab */)
385 
386 // This message notifies the AutomationProvider to navigate to a specified
387 // url in the external tab with given handle. The first parameter is the
388 // handle to the tab resource. The second parameter is the target url.
389 // The third parameter is the referrer.
390 // The return value contains a status code which is nonnegative on success.
391 // see AutomationMsg_NavigationResponseValues for the navigation response.
392 IPC_SYNC_MESSAGE_CONTROL3_1(AutomationMsg_NavigateInExternalTab,
393                             int,
394                             GURL,
395                             GURL,
396                             AutomationMsg_NavigationResponseValues)
397 
398 // This message is an outgoing message from Chrome to an external host.
399 // It is a notification that the NavigationState was changed
400 // Request:
401 //   -int: The flags specifying what changed
402 //         (see TabContents::InvalidateTypes)
403 // Response:
404 //   None expected
405 IPC_MESSAGE_ROUTED2(AutomationMsg_NavigationStateChanged,
406                     int,  // TabContents::InvalidateTypes
407                     NavigationInfo)  // title, url etc.
408 
409 // This message is an outgoing message from Chrome to an external host.
410 // It is a notification that the target URL has changed (the target URL
411 // is the URL of the link that the user is hovering on)
412 // Request:
413 //   -std::wstring: The new target URL
414 // Response:
415 //   None expected
416 IPC_MESSAGE_ROUTED1(AutomationMsg_UpdateTargetUrl,
417                     std::wstring)
418 
419 // This message notifies the AutomationProvider to show the specified html
420 // text in an interstitial page in the tab with given handle. The first
421 // parameter is the handle to the tab resource. The second parameter is the
422 // html text to be displayed.
423 // The return value contains a success flag.
424 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_ShowInterstitialPage,
425                             int,
426                             std::string,
427                             AutomationMsg_NavigationResponseValues)
428 
429 // This message notifies the AutomationProvider to hide the current
430 // interstitial page in the tab with given handle. The parameter is the
431 // handle to the tab resource.
432 // The return value contains a success flag.
433 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_HideInterstitialPage,
434                             int,
435                             bool)
436 
437 // This message requests that a tab be closed.
438 // Request:
439 //   - int: handle of the tab to close
440 //   - bool: if true the proxy blocks until the tab has completely closed,
441 //           otherwise the proxy only blocks until it initiates the close.
442 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_CloseTab,
443                             int,
444                             bool,
445                             bool)
446 
447 // This message requests that the browser be closed.
448 // Request:
449 //   - int: handle of the browser which contains the tab
450 // Response:
451 //  - bool: whether the operation was successfull.
452 //  - bool: whether the browser process will be terminated as a result (if
453 //          this was the last closed browser window).
454 IPC_SYNC_MESSAGE_CONTROL1_2(AutomationMsg_CloseBrowser,
455                             int,
456                             bool,
457                             bool)
458 
459 IPC_MESSAGE_CONTROL1(AutomationMsg_CloseBrowserRequestAsync,
460                      int)
461 
462 #if defined(OS_WIN)
463 // TODO(port): Port these messages.
464 //
465 // This message is an outgoing message from Chrome to an external host.
466 // It is a request to process a keyboard accelerator.
467 // Request:
468 //   -MSG: The keyboard message
469 // Response:
470 //   None expected
471 // TODO(sanjeevr): Ideally we need to add a response from the external
472 // host saying whether it processed the accelerator
473 IPC_MESSAGE_ROUTED1(AutomationMsg_HandleAccelerator,
474                     MSG)
475 
476 // This message is sent by the container of an externally hosted tab to
477 // reflect any accelerator keys that it did not process. This gives the
478 // tab a chance to handle the keys
479 // Request:
480 //   - int: handle of the tab
481 //   -MSG: The keyboard message that the container did not handle
482 // Response:
483 //   None expected
484 IPC_MESSAGE_CONTROL2(AutomationMsg_ProcessUnhandledAccelerator,
485                      int,
486                      MSG)
487 #endif  // defined(OS_WIN)
488 
489 // Sent by the external tab to the host to notify that the user has tabbed
490 // out of the tab.
491 // Request:
492 //   - bool: |reverse| set to true when shift-tabbing out of the tab, false
493 //    otherwise.
494 // Response:
495 //   None expected
496 IPC_MESSAGE_ROUTED1(AutomationMsg_TabbedOut,
497                     bool)
498 
499 // Sent by the external tab host to ask focus to be set to either the first
500 // or last element on the page.
501 // Request:
502 //   - int: handle of the tab
503 //   - bool: |reverse|
504 //      true: Focus will be set to the last focusable element
505 //      false: Focus will be set to the first focusable element
506 //   - bool: |restore_focus_to_view|
507 //      true: The renderer view associated with the current tab will be
508 //            infomed that it is receiving focus.
509 // Response:
510 //   None expected
511 IPC_MESSAGE_CONTROL3(AutomationMsg_SetInitialFocus,
512                      int,
513                      bool,
514                      bool)
515 
516 // This message is an outgoing message from Chrome to an external host.
517 // It is a request to open a url
518 // Request:
519 //   -GURL: The URL to open
520 //   -GURL: The referrer
521 //   -int: The WindowOpenDisposition that specifies where the URL should
522 //         be opened (new tab, new window etc).
523 // Response:
524 //   None expected
525 IPC_MESSAGE_ROUTED3(AutomationMsg_OpenURL,
526                     GURL,
527                     GURL,
528                     int)
529 
530 // This message requests the provider to wait until the specified tab has
531 // finished restoring after session restore.
532 // Request:
533 //   - int: handle of the tab
534 // Response:
535 //  - bool: whether the operation was successful.
536 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_WaitForTabToBeRestored,
537                             int, bool)
538 
539 // This message is an outgoing message from Chrome to an external host.
540 // It is a notification that a navigation happened
541 // Request:
542 //
543 // Response:
544 //   None expected
545 IPC_MESSAGE_ROUTED1(AutomationMsg_DidNavigate,
546                     NavigationInfo)
547 
548 // This message requests the different security states of the page displayed
549 // in the specified tab.
550 // Request:
551 //   - int: handle of the tab
552 // Response:
553 //  - bool: whether the operation was successful.
554 //  - SecurityStyle: the security style of the tab.
555 //  - int: the status of the server's ssl cert (0 means no errors or no ssl
556 //         was used).
557 //  - int: the insecure content state, 0 means no insecure contents.
558 
559 IPC_SYNC_MESSAGE_CONTROL1_4(AutomationMsg_GetSecurityState,
560                             int,
561                             bool,
562                             SecurityStyle,
563                             int,
564                             int)
565 
566 // This message requests the page type of the page displayed in the specified
567 // tab (normal, error or interstitial).
568 // Request:
569 //   - int: handle of the tab
570 // Response:
571 //  - bool: whether the operation was successful.
572 //  - PageType: the type of the page currently displayed.
573 IPC_SYNC_MESSAGE_CONTROL1_2(AutomationMsg_GetPageType,
574                             int,
575                             bool,
576                             PageType)
577 
578 // This message simulates the user action on the SSL blocking page showing in
579 // the specified tab.  This message is only effective if an interstitial page
580 // is showing in the tab.
581 // Request:
582 //   - int: handle of the tab
583 //   - bool: whether to proceed or abort the navigation
584 // Response:
585 //  - AutomationMsg_NavigationResponseValues: result of the operation.
586 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_ActionOnSSLBlockingPage,
587                             int,
588                             bool,
589                             AutomationMsg_NavigationResponseValues)
590 
591 // Message to request that a browser window is brought to the front and
592 // activated.
593 // Request:
594 //   - int: handle of the browser window.
595 // Response:
596 //   - bool: True if the browser is brought to the front.
597 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_BringBrowserToFront,
598                             int,
599                             bool)
600 
601 // Message to request whether a certain item is enabled of disabled in the
602 // menu in the browser window
603 //
604 // Request:
605 //   - int: handle of the browser window.
606 //   - int: IDC message identifier to query if enabled
607 // Response:
608 //   - bool: True if the command is enabled on the menu
609 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_IsMenuCommandEnabled,
610                             int,
611                             int,
612                             bool)
613 
614 // This message notifies the AutomationProvider to print the tab with given
615 // handle. The first parameter is the handle to the tab resource.  The
616 // return value contains a bool which is true on success.
617 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_PrintNow,
618                             int,
619                             bool)
620 
621 // This message notifies the AutomationProvider to reload the current page in
622 // the tab with given handle. The first parameter is the handle to the tab
623 // resource.  The return value contains a status code which is nonnegative on
624 // success.
625 // see AutomationMsg_NavigationResponseValues for the navigation response.
626 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_Reload,
627                             int,
628                             AutomationMsg_NavigationResponseValues)
629 
630 // This message requests the handle (int64 app-unique identifier) of the
631 // last active browser window, or the browser at index 0 if there is no last
632 // active browser, or it no longer exists. Returns 0 if no browser windows
633 // exist.
634 IPC_SYNC_MESSAGE_CONTROL0_1(AutomationMsg_LastActiveBrowserWindow,
635                             int)
636 
637 // This message notifies the AutomationProvider to save the page with given
638 // handle. The first parameter is the handle to the tab resource. The second
639 // parameter is the main HTML file name. The third parameter is the directory
640 // for saving resources. The fourth parameter is the saving type: 0 for HTML
641 // only; 1 for complete web page.
642 // The return value contains a bool which is true on success.
643 IPC_SYNC_MESSAGE_CONTROL4_1(AutomationMsg_SavePage,
644                             int,
645                             FilePath,
646                             FilePath,
647                             int,
648                             bool)
649 
650 // This message requests the text currently being displayed in the
651 // AutocompleteEdit.  The parameter is the handle to the AutocompleteEdit.
652 // The return value is a string indicating the text in the AutocompleteEdit.
653 IPC_SYNC_MESSAGE_CONTROL1_2(AutomationMsg_AutocompleteEditGetText,
654                             int /* autocomplete edit handle */,
655                             bool /* the requested autocomplete edit exists */,
656                             string16 /* omnibox text */)
657 
658 // This message sets the text being displayed in the AutocompleteEdit.  The
659 // first parameter is the handle to the omnibox and the second parameter is
660 // the text to be displayed in the AutocompleteEdit.
661 // The return value has no parameters and is returned when the operation has
662 // completed.
663 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_AutocompleteEditSetText,
664                             int /* autocomplete edit handle */,
665                             string16 /* text to set */,
666                             bool /* the requested autocomplete edit exists */)
667 
668 // This message requests if a query to a autocomplete provider is still in
669 // progress.  The first parameter in the request is the handle to the
670 // autocomplete edit.
671 // The first return value indicates if the request succeeded.
672 // The second return value indicates if a query is still in progress.
673 IPC_SYNC_MESSAGE_CONTROL1_2( \
674     AutomationMsg_AutocompleteEditIsQueryInProgress,
675     int /* autocomplete edit handle*/,
676     bool /* the requested autocomplete edit exists */,
677     bool /* indicates if a query is in progress */)
678 
679 // This message requests a list of the autocomplete messages currently being
680 // displayed by the popup.  The parameter in the request is a handle to the
681 // autocomplete edit.
682 // The first return value indicates if the request was successful, while
683 // while the second is the actual list of matches.
684 IPC_SYNC_MESSAGE_CONTROL1_2(AutomationMsg_AutocompleteEditGetMatches,
685                             int /* autocomplete edit handle*/,
686                             bool /* the requested autocomplete edit exists */,
687                             std::vector<AutocompleteMatchData> /* matches */)
688 
689 // This message requests the execution of a browser command in the browser
690 // for which the handle is specified.
691 // The return value contains a boolean, whether the command was dispatched.
692 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_WindowExecuteCommandAsync,
693                             int /* automation handle */,
694                             int /* browser command */,
695                             bool /* success flag */)
696 
697 // This message requests the execution of a browser command in the browser
698 // for which the handle is specified.
699 // The return value contains a boolean, whether the command was dispatched
700 // and successful executed.
701 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_WindowExecuteCommand,
702                             int /* automation handle */,
703                             int /* browser command */,
704                             bool /* success flag */)
705 
706 
707 // This message opens the Find window within a tab corresponding to the
708 // supplied tab handle.
709 IPC_MESSAGE_CONTROL1(AutomationMsg_OpenFindInPage,
710                      int /* tab_handle */)
711 
712 // Posts a message from external host to chrome renderer.
713 IPC_MESSAGE_CONTROL4(AutomationMsg_HandleMessageFromExternalHost,
714                      int /* automation handle */,
715                      std::string /* message */,
716                      std::string /* origin */,
717                      std::string /* target */)
718 
719 // A message for an external host.
720 IPC_MESSAGE_ROUTED3(AutomationMsg_ForwardMessageToExternalHost,
721                     std::string /* message */,
722                     std::string /* origin */,
723                     std::string /* target */)
724 
725 // This message starts a find within a tab corresponding to the supplied
726 // tab handle. The parameter |request| specifies what to search for.
727 // If an error occurs, |matches_found| will be -1.
728 //
729 IPC_SYNC_MESSAGE_CONTROL2_2(AutomationMsg_Find,
730                             int /* tab_handle */,
731                             AutomationMsg_Find_Params /* params */,
732                             int /* active_ordinal */,
733                             int /* matches_found */)
734 
735 // Is the Find window fully visible (and not animating) for the specified
736 // tab?
737 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_FindWindowVisibility,
738                             int /* tab_handle */,
739                             bool /* is_visible */)
740 
741 // Where is the Find window located. |x| and |y| will be -1, -1 on failure.
742 IPC_SYNC_MESSAGE_CONTROL1_2(AutomationMsg_FindWindowLocation,
743                             int /* tab_handle */,
744                             int /* x */,
745                             int /* y */)
746 
747 // Is the Bookmark bar visible? The return value will indicate whether it is
748 // visible or not and whether it is being animated into (or out of its place).
749 IPC_SYNC_MESSAGE_CONTROL1_2(AutomationMsg_BookmarkBarVisibility,
750                             int /* browser_handle */,
751                             bool, /* is_visible */
752                             bool  /* still_animating */)
753 
754 // This message requests the number of related info bars opened.  It
755 // returns -1 if an error occurred.
756 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_GetInfoBarCount,
757                             int /* tab_handle */,
758                             size_t /* info bar count */)
759 
760 // This message triggers the action associated with the "accept" button in
761 // the info-bar at the specified index.  If |wait for navigation| is true, it
762 // won't return until a navigation has occurred.
763 IPC_SYNC_MESSAGE_CONTROL3_1(AutomationMsg_ClickInfoBarAccept,
764                             int /* tab_handle */,
765                             size_t /* info bar index */,
766                             bool /* wait for navigation */,
767 // This line blank on purpose, see comment atop file about __LINE__.
768                             /* navigation result */
769                             AutomationMsg_NavigationResponseValues)
770 
771 // This message retrieves the last time a navigation occurred in the specified
772 // tab.  The value is intended to be used with WaitForNavigation.
773 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_GetLastNavigationTime,
774                             int /* tab_handle */,
775                             int64 /* last navigation time */)
776 
777 // This messages is used to block until a new navigation occurs (if there is
778 // none more recent then the time specified).
779 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_WaitForNavigation,
780                             int /* tab_handle */,
781                             int64 /* last navigation time */,
782 // This line blank on purpose, see comment atop file about __LINE__.
783                             /* navigation result */
784                             AutomationMsg_NavigationResponseValues)
785 
786 // This messages sets an int-value preference.
787 IPC_SYNC_MESSAGE_CONTROL3_1(AutomationMsg_SetIntPreference,
788                             int /* browser handle */,
789                             std::string /* pref name */,
790                             int /* value */,
791                             bool /* success */)
792 
793 // Queries whether an app modal dialog is currently being shown. (i.e. a
794 // javascript alert) and which buttons it contains.
795 IPC_SYNC_MESSAGE_CONTROL0_2(AutomationMsg_ShowingAppModalDialog,
796                             bool /* showing dialog */,
797                             int /* view::DelegateDialog::DialogButton */)
798 
799 // This message triggers the specified button for the currently showing
800 // modal dialog.
801 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_ClickAppModalDialogButton,
802                             int /* view::DelegateDialog::DialogButton */,
803                             bool /* success */)
804 
805 // This messages sets a string-value preference.
806 IPC_SYNC_MESSAGE_CONTROL3_1(AutomationMsg_SetStringPreference,
807                             int /* browser handle */,
808                             std::string /* pref name */,
809                             std::string /* pref value */,
810                             bool)
811 
812 // This messages gets a boolean-value preference.
813 IPC_SYNC_MESSAGE_CONTROL2_2(AutomationMsg_GetBooleanPreference,
814                            int /* browser handle */,
815                            std::string /* pref name */,
816                            bool /* success */,
817                            bool /* pref value */)
818 
819 // This messages sets a boolean-value preference.
820 IPC_SYNC_MESSAGE_CONTROL3_1(AutomationMsg_SetBooleanPreference,
821                             int /* browser handle */,
822                             std::string /* pref name */,
823                             bool /* pref value */,
824                             bool /* success */)
825 
826 // Queries the current used encoding name of the page in the specified
827 // web content tab.
828 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_GetPageCurrentEncoding,
829                             int /* tab handle */,
830                             std::string /* current used encoding name */)
831 
832 // Uses the specified encoding to override the encoding of the page in the
833 // specified web content tab.
834 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_OverrideEncoding,
835                             int /* tab handle */,
836                             std::string /* overrided encoding name */,
837                             bool /* success */)
838 
839 // Used to disable the dialog box that prompts the user for a path when
840 // saving a web page.
841 IPC_SYNC_MESSAGE_CONTROL1_0(AutomationMsg_SavePackageShouldPromptUser,
842                             bool /* false if we want to not show the dialog */)
843 
844 // This message is an outgoing message from Chrome to an external host.
845 // It is a notification that a navigation failed
846 // Request:
847 //   -int : The status code.
848 //   -GURL:  The URL we failed to navigate to.
849 // Response:
850 //   None expected
851 IPC_MESSAGE_ROUTED2(AutomationMsg_NavigationFailed,
852                     int,
853                     GURL)
854 
855 #if defined(OS_WIN)
856 // This message is an outgoing message from an automation client to Chrome.
857 // It is used to reposition a chrome tab window.
858 IPC_MESSAGE_CONTROL2(AutomationMsg_TabReposition,
859                      int /* tab handle */,
860                      Reposition_Params /* SetWindowPos params */)
861 #endif  // defined(OS_WIN)
862 
863 // Gets the title of the top level browser window.
864 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_WindowTitle,
865                             int /* automation handle */,
866                             string16 /* title text */ )
867 
868 // Tab load complete
869 IPC_MESSAGE_ROUTED1(AutomationMsg_TabLoaded,
870                     GURL)
871 
872 // This message requests the tabstrip index of the tab with the given handle.
873 // The return value contains the index, which will be -1 on failure.
874 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_TabIndex,
875                             int,
876                             int)
877 
878 // This message requests the handle (int64 app-unique identifier) of
879 // a valid normal browser window, i.e. normal type and non-incognito mode.
880 // On error, the returned handle value is 0.
881 IPC_SYNC_MESSAGE_CONTROL0_1(AutomationMsg_FindNormalBrowserWindow,
882                             int)
883 
884 // This message requests the number of normal browser windows, i.e. normal
885 // type and non-incognito mode that the app currently has open.  The return
886 // value is the number of windows.
887 IPC_SYNC_MESSAGE_CONTROL0_1(AutomationMsg_NormalBrowserWindowCount,
888                             int)
889 
890 // DEPRECATED MESSAGE - But we must leave this comment and message so as
891 // not to perturb line numbers (see comment at top of file re __LINE__).
892 // TODO(phajdan.jr): Remove when the reference build is updated (this and
893 // all others marked "DEPRECATED MESSAGE").
894 // (intentionally blank line)
895 IPC_MESSAGE_CONTROL2(AutomationMsg_DeprecatedMessageOne,
896                      // (intentionally blank line)
897                      int,
898                      // (intentionally blank line)
899                      // (intentionally blank line)
900                      // (intentionally blank line)
901                      // (intentionally blank line)
902                      int)
903 
904 // This message tells the browser to start using the new proxy configuration
905 // represented by the given JSON string. The parameters used in the JSON
906 // string are defined in automation_constants.h.
907 IPC_MESSAGE_CONTROL1(AutomationMsg_SetProxyConfig,
908                      std::string /* proxy_config_json_string */)
909 
910 // Sets Download Shelf visibility for the specified browser.
911 IPC_SYNC_MESSAGE_CONTROL2_0(AutomationMsg_SetShelfVisibility,
912                             int /* browser_handle */,
913                             bool /* is_visible */)
914 
915 // This message requests the number of blocked popups in a certain tab with
916 // the given handle. The return value is the number of blocked popups, or -1
917 // if this request failed.
918 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_BlockedPopupCount,
919                             int /* tab_handle */,
920                             int /* blocked_popup_count */)
921 
922 // This message retrieves the locale of the browser process.  On success
923 // |chrome_locale| will contain the locale as reported by ICU.  On failure
924 // |chrome_locale| is the empty string.
925 IPC_SYNC_MESSAGE_CONTROL0_1(AutomationMsg_GetBrowserLocale,
926                             string16 /* chrome_locale */)
927 
928 #if defined(OS_WIN)
929 IPC_MESSAGE_ROUTED3(AutomationMsg_ForwardContextMenuToExternalHost,
930                     HANDLE /* source menu handle */,
931                     int    /* align flags */,
932                     MiniContextMenuParams /* params */)
933 
934 IPC_MESSAGE_CONTROL2(AutomationMsg_ForwardContextMenuCommandToChrome,
935                      int /* tab_handle */,
936                      int /* selected_command */)
937 #endif  // OS_WIN
938 
939 // A URL request to be fetched via automation
940 IPC_MESSAGE_ROUTED2(AutomationMsg_RequestStart,
941                     int /* request_id */,
942                     AutomationURLRequest /* request */)
943 
944 // Read data from a URL request to be fetched via automation
945 IPC_MESSAGE_ROUTED2(AutomationMsg_RequestRead,
946                     int /* request_id */,
947                     int /* bytes_to_read */)
948 
949 // Response to a AutomationMsg_RequestStart message
950 IPC_MESSAGE_ROUTED2(AutomationMsg_RequestStarted,
951                     int /* request_id */,
952                     AutomationURLResponse /* response */)
953 
954 // Data read via automation
955 IPC_MESSAGE_ROUTED2(AutomationMsg_RequestData,
956                     int /* request_id */,
957                     std::string /* data */)
958 
959 IPC_MESSAGE_ROUTED2(AutomationMsg_RequestEnd,
960                     int /* request_id */,
961                     net::URLRequestStatus /* status */)
962 
963 IPC_MESSAGE_CONTROL1(AutomationMsg_PrintAsync,
964                      int /* tab_handle */)
965 
966 IPC_MESSAGE_ROUTED2(AutomationMsg_SetCookieAsync,
967                     GURL /* url */,
968                     std::string /* cookie */)
969 
970 IPC_MESSAGE_CONTROL1(AutomationMsg_SelectAll,
971                     int /* tab handle */)
972 
973 IPC_MESSAGE_CONTROL1(AutomationMsg_Cut,
974                      int /* tab handle */)
975 
976 IPC_MESSAGE_CONTROL1(AutomationMsg_Copy,
977                      int /* tab handle */)
978 
979 IPC_MESSAGE_CONTROL1(AutomationMsg_Paste,
980                      int /* tab handle */)
981 
982 IPC_MESSAGE_CONTROL1(AutomationMsg_ReloadAsync,
983                      int /* tab handle */)
984 
985 IPC_MESSAGE_CONTROL1(AutomationMsg_StopAsync,
986                      int /* tab handle */)
987 
988 // Returns the number of times a filter was used to service an URL request.
989 // See AutomationMsg_SetFilteredInet.
990 IPC_SYNC_MESSAGE_CONTROL0_1(AutomationMsg_GetFilteredInetHitCount,
991                             int /* hit_count */)
992 
993 // Is the browser in fullscreen mode?
994 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_IsFullscreen,
995                             int /* browser_handle */,
996                             bool /* is_fullscreen */)
997 
998 // Is the fullscreen bubble visible?
999 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_IsFullscreenBubbleVisible,
1000                             int /* browser_handle */,
1001                             bool /* is_visible */)
1002 
1003 // This message notifies the AutomationProvider to navigate to a specified
1004 // url in the tab with given handle. The first parameter is the handle to
1005 // the tab resource. The second parameter is the target url.  The third
1006 // parameter is the number of navigations that are required for a successful
1007 // return value. See AutomationMsg_NavigationResponseValues for the return
1008 // value.
1009 IPC_SYNC_MESSAGE_CONTROL3_1(
1010     AutomationMsg_NavigateToURLBlockUntilNavigationsComplete,
1011     int,
1012     GURL,
1013     int,
1014     AutomationMsg_NavigationResponseValues)
1015 
1016 // This message notifies the AutomationProvider to navigate to a specified
1017 // navigation entry index in the external tab with given handle. The first
1018 // parameter is the handle to the tab resource. The second parameter is the
1019 // index of navigation entry.
1020 // The return value contains a status code which is nonnegative on success.
1021 // see AutomationMsg_NavigationResponseValues for the navigation response.
1022 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_NavigateExternalTabAtIndex,
1023                             int,
1024                             int,
1025                             AutomationMsg_NavigationResponseValues)
1026 
1027 // This message requests the provider to wait until the window count
1028 // reached the specified value.
1029 // Request:
1030 //  - int: target browser window count
1031 // Response:
1032 //  - bool: whether the operation was successful.
1033 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_WaitForBrowserWindowCountToBecome,
1034                            int,
1035                            bool)
1036 
1037 // This message requests the provider to wait until an application modal
1038 // dialog is shown.
1039 // Response:
1040 //  - bool: whether the operation was successful
1041 IPC_SYNC_MESSAGE_CONTROL0_1(AutomationMsg_WaitForAppModalDialogToBeShown,
1042                             bool)
1043 
1044 // This message notifies the AutomationProvider to navigate back in session
1045 // history in the tab with given handle. The first parameter is the handle
1046 // to the tab resource. The second parameter is the number of navigations the
1047 // provider will wait for.
1048 // See AutomationMsg_NavigationResponseValues for the navigation response
1049 // values.
1050 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_GoBackBlockUntilNavigationsComplete,
1051                             int,
1052                             int,
1053                             AutomationMsg_NavigationResponseValues)
1054 
1055 // This message notifies the AutomationProvider to navigate forward in session
1056 // history in the tab with given handle. The first parameter is the handle
1057 // to the tab resource. The second parameter is the number of navigations
1058 // the provider will wait for.
1059 // See AutomationMsg_NavigationResponseValues for the navigation response
1060 // values.
1061 IPC_SYNC_MESSAGE_CONTROL2_1(
1062     AutomationMsg_GoForwardBlockUntilNavigationsComplete,
1063     int,
1064     int,
1065     AutomationMsg_NavigationResponseValues)
1066 
1067 // This message is used by automation clients to upload histogram data to the
1068 // browser process.
1069 IPC_MESSAGE_CONTROL1(AutomationMsg_RecordHistograms,
1070                      std::vector<std::string> /* histogram_list */)
1071 
1072 IPC_MESSAGE_ROUTED1(AutomationMsg_AttachExternalTab,
1073                     AttachExternalTabParams)
1074 
1075 // Sent when the automation client connects to an existing tab.
1076 IPC_SYNC_MESSAGE_CONTROL3_4(AutomationMsg_ConnectExternalTab,
1077                             uint64 /* cookie */,
1078                             bool   /* allow/block tab*/,
1079                             gfx::NativeWindow  /* parent window */,
1080                             gfx::NativeWindow  /* Tab container window */,
1081                             gfx::NativeWindow  /* Tab window */,
1082                             int  /* Handle to the new tab */,
1083                             int  /* Session Id of the new tab */)
1084 
1085 // This message gets the bounds of the window.
1086 // Request:
1087 //   int - the handle of the window to query
1088 // Response:
1089 //   gfx::Rect - the bounds of the window
1090 //   bool - true if the query was successful
1091 IPC_SYNC_MESSAGE_CONTROL1_2(AutomationMsg_GetWindowBounds,
1092                             int,
1093                             gfx::Rect,
1094                             bool)
1095 
1096 // Simulate an end of session. Normally this happens when the user
1097 // shuts down the machine or logs off.
1098 // Request:
1099 //   int - the handle of the browser
1100 // Response:
1101 //   bool - true if succesful
1102 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_TerminateSession,
1103                             int,
1104                             bool)
1105 
1106 // Returns whether the window is maximized.
1107 // Request:
1108 //   int - the handle of the window
1109 // Response:
1110 //   bool - true if the window is maximized
1111 //   bool - true if query is successful
1112 IPC_SYNC_MESSAGE_CONTROL1_2(AutomationMsg_IsWindowMaximized,
1113                             int,
1114                             bool,
1115                             bool)
1116 
1117 IPC_MESSAGE_CONTROL2(AutomationMsg_SetPageFontSize,
1118                      int /* tab_handle */,
1119                      int /* The font size */)
1120 
1121 // Returns a metric event duration that was last recorded.  Returns -1 if the
1122 // event hasn't occurred yet.
1123 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_GetMetricEventDuration,
1124                             std::string /* event_name */,
1125                             int /* duration ms */)
1126 
1127 // Sent by automation provider - go to history entry via automation.
1128 IPC_MESSAGE_ROUTED1(AutomationMsg_RequestGoToHistoryEntryOffset,
1129                     int)   // numbers of entries (negative or positive)
1130 
1131 // Silently install the extension in the given crx file.
1132 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_InstallExtension,
1133                             FilePath /* full path to crx file */,
1134                             AutomationMsg_ExtensionResponseValues)
1135 
1136 // DEPRECATED MESSAGE - But we must leave this comment and message so as
1137 // not to perturb line numbers (see comment at top of file re __LINE__).
1138 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_DeprecatedMessageTwo,
1139                             int,
1140                             int)
1141 
1142 // DEPRECATED MESSAGE - But we must leave this comment and message so as
1143 // not to perturb line numbers (see comment at top of file re __LINE__).
1144 // (intentionally blank line)
1145 // (intentionally blank line)
1146 // (intentionally blank line)
1147 // (intentionally blank line)
1148 IPC_SYNC_MESSAGE_CONTROL0_1(AutomationMsg_DeprecatedMessageThree,
1149                             int)
1150 
1151 // This message requests the type of the window with the given handle. The
1152 // return value contains the type (Browser::Type), or -1 if the request
1153 // failed.
1154 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_Type,
1155                             int,
1156                             int)
1157 
1158 // Opens a new browser window of a specific type.
1159 IPC_SYNC_MESSAGE_CONTROL2_0(AutomationMsg_OpenNewBrowserWindowOfType,
1160                             int   /* Type (Browser::Type) */,
1161                             bool  /* show */ )
1162 
1163 // This message requests that the mouse be moved to this location, in
1164 // window coordinate space.
1165 // Request:
1166 //   int - the handle of the window that's the context for this click
1167 //   gfx::Point - the location to move to
1168 IPC_MESSAGE_CONTROL2(AutomationMsg_WindowMouseMove,
1169                      int,
1170                      gfx::Point)
1171 
1172 // Called when requests should be downloaded using a host browser's
1173 // download mechanism when chrome is being embedded.
1174 IPC_MESSAGE_ROUTED1(AutomationMsg_DownloadRequestInHost,
1175                     int /* request_id */)
1176 
1177 // Shuts down the session service for the browser identified by
1178 // |browser_handle|. On success |result| is set to true.
1179 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_ShutdownSessionService,
1180                             int   /* browser_handle */,
1181                             bool  /* result */)
1182 
1183 IPC_MESSAGE_CONTROL1(AutomationMsg_SaveAsAsync,
1184                      int /* tab handle */)
1185 
1186 #if defined(OS_WIN)
1187 // An incoming message from an automation host to Chrome.  Signals that
1188 // the browser containing |tab_handle| has moved.
1189 IPC_MESSAGE_CONTROL1(AutomationMsg_BrowserMove,
1190                      int /* tab handle */)
1191 #endif
1192 
1193 // Used to get cookies for the given URL.
1194 IPC_MESSAGE_ROUTED2(AutomationMsg_GetCookiesFromHost,
1195                     GURL /* url */,
1196                     int /* opaque_cookie_id */)
1197 
1198 IPC_MESSAGE_CONTROL5(AutomationMsg_GetCookiesHostResponse,
1199                      int /* tab_handle */,
1200                      bool /* success */,
1201                      GURL /* url */,
1202                      std::string /* cookies */,
1203                      int /* opaque_cookie_id */)
1204 
1205 // If the given host is empty, then the default content settings are
1206 // modified.
1207 IPC_SYNC_MESSAGE_CONTROL4_1(AutomationMsg_SetContentSetting,
1208                             int /* browser handle */,
1209                             std::string /* host */,
1210                             ContentSettingsType /* content type */,
1211                             ContentSetting /* setting */,
1212                             bool /* success */)
1213 
1214 #if defined(OS_CHROMEOS)
1215 // Logs in through the browser's login wizard if available.
1216 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_LoginWithUserAndPass,
1217                            std::string /* username*/,
1218                            std::string /* password*/,
1219                            bool /* Whether successful*/)
1220 #endif
1221 
1222 // Return the bookmarks encoded as a JSON string.
1223 IPC_SYNC_MESSAGE_CONTROL1_2(AutomationMsg_GetBookmarksAsJSON,
1224                             int /* browser_handle */,
1225                             std::string /* bookmarks as a JSON string */,
1226                             bool /* success */)
1227 
1228 // Wait for the bookmark model to load.
1229 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_WaitForBookmarkModelToLoad,
1230                             int /* browser_handle */,
1231                             bool /* success */)
1232 
1233 // Bookmark addition, modification, and removal.
1234 // Bookmarks are indexed by their id.
1235 IPC_SYNC_MESSAGE_CONTROL4_1(AutomationMsg_AddBookmarkGroup,
1236                             int /* browser_handle */,
1237                             int64 /* parent_id */,
1238                             int /* index */,
1239                             std::wstring /* title */,
1240                             bool /* success */)
1241 IPC_SYNC_MESSAGE_CONTROL5_1(AutomationMsg_AddBookmarkURL,
1242                             int /* browser_handle */,
1243                             int64 /* parent_id */,
1244                             int /* index */,
1245                             std::wstring /* title */,
1246                             GURL /* url */,
1247                             bool /* success */)
1248 IPC_SYNC_MESSAGE_CONTROL4_1(AutomationMsg_ReparentBookmark,
1249                             int /* browser_handle */,
1250                             int64 /* id */,
1251                             int64 /* new_parent_id */,
1252                             int /* index */,
1253                             bool /* success */)
1254 IPC_SYNC_MESSAGE_CONTROL3_1(AutomationMsg_SetBookmarkTitle,
1255                             int /* browser_handle */,
1256                             int64 /* id */,
1257                             std::wstring /* title */,
1258                             bool /* success */)
1259 IPC_SYNC_MESSAGE_CONTROL3_1(AutomationMsg_SetBookmarkURL,
1260                             int /* browser_handle */,
1261                             int64 /* id */,
1262                             GURL /* url */,
1263                             bool /* success */)
1264 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_RemoveBookmark,
1265                             int /* browser_handle */,
1266                             int64 /* id */,
1267                             bool /* success */)
1268 
1269 // This message informs the browser process to remove the history entries
1270 // for the specified types across all time ranges. See
1271 // browsing_data_remover.h for a list of REMOVE_* types supported in the
1272 // remove_mask parameter.
1273 IPC_MESSAGE_CONTROL1(AutomationMsg_RemoveBrowsingData,
1274                      int)
1275 
1276 // Block until the focused view id changes to something other than
1277 // |previous_view_id|.
1278 IPC_SYNC_MESSAGE_CONTROL2_2(AutomationMsg_WaitForFocusedViewIDToChange,
1279                             int /* window handle */,
1280                             int /* previous_view_id */,
1281                             bool /* success */,
1282                             int /* new_view_id */)
1283 
1284 // To avoid race conditions, waiting until a popup menu opens is a
1285 // three-step process:
1286 //   1. Call StartTrackingPopupMenus.
1287 //   2. Call an automation method that results in opening the popup menu.
1288 //   3. Call WaitForPopupMenuToOpen and check for success.
1289 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_StartTrackingPopupMenus,
1290                             int /* browser handle */,
1291                             bool /* success */)
1292 IPC_SYNC_MESSAGE_CONTROL0_1(AutomationMsg_WaitForPopupMenuToOpen,
1293                             bool /* success */)
1294 
1295 // Generic pyauto pattern to help avoid future addition of
1296 // automation messages.
1297 IPC_SYNC_MESSAGE_CONTROL2_2(AutomationMsg_SendJSONRequest,
1298                             int /* browser_handle */,
1299                             std::string /* JSON request */,
1300                             std::string /* JSON response */,
1301                             bool /* success */)
1302 
1303 // Installs an extension from the crx file and returns its id.
1304 // On error, |extension handle| will be 0.
1305 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_InstallExtensionAndGetHandle,
1306                             FilePath     /* full path to crx file */,
1307                             bool         /* with UI */,
1308                             int          /* extension handle */)
1309 
1310 // Waits for the next extension test result. Sets |test result| as the
1311 // received result and |message| as any accompanying message with the
1312 // result, which could be the empty string.
1313 IPC_SYNC_MESSAGE_CONTROL0_2(AutomationMsg_WaitForExtensionTestResult,
1314                             bool         /* test result */,
1315                             std::string  /* message */)
1316 
1317 // Uninstalls an extension. On success |success| is true.
1318 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_UninstallExtension,
1319                             int   /* extension handle */,
1320                             bool  /* success */)
1321 
1322 // Enables an extension. On success |success| is true.
1323 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_EnableExtension,
1324                            int   /* extension handle */,
1325                            bool  /* success */)
1326 
1327 // Disables an extension. On success |success| is true.
1328 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_DisableExtension,
1329                             int   /* extension handle */,
1330                             bool  /* success */)
1331 
1332 // Executes the action associated with the given extension. This executes
1333 // the extension's page or browser action in the given browser, but does
1334 // not open popups. On success |success| is true.
1335 IPC_SYNC_MESSAGE_CONTROL2_1(
1336     AutomationMsg_ExecuteExtensionActionInActiveTabAsync,
1337     int   /* extension handle */,
1338     int   /* browser handle */,
1339     bool  /* success */)
1340 
1341 // Moves the browser action to the given index in the browser action toolbar.
1342 // On success |success| is true.
1343 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_MoveExtensionBrowserAction,
1344                             int   /* extension handle */,
1345                             int   /* index */,
1346                             bool  /* success */)
1347 
1348 // Gets an extension property |property type|. On success |success| is true,
1349 // and |property value| is set.
1350 IPC_SYNC_MESSAGE_CONTROL2_2(AutomationMsg_GetExtensionProperty,
1351     int                              /* extension handle */,
1352     AutomationMsg_ExtensionProperty  /* property type */,
1353     bool                             /* success */,
1354     std::string                      /* property value */)
1355 
1356 // Resets to the default theme.
1357 IPC_SYNC_MESSAGE_CONTROL0_0(AutomationMsg_ResetToDefaultTheme)
1358 
1359 // Navigates asynchronously to a URL with a certain disposition,
1360 // like in a new tab.
1361 IPC_SYNC_MESSAGE_CONTROL3_1(AutomationMsg_NavigationAsyncWithDisposition,
1362                             int /* tab handle */,
1363                             GURL,
1364                             WindowOpenDisposition,
1365                             bool /* result */)
1366 
1367 
1368 // This message requests the cookie be deleted for given url in the
1369 // profile of the tab identified by the first parameter.  The second
1370 // parameter is the cookie name.
1371 IPC_SYNC_MESSAGE_CONTROL3_1(AutomationMsg_DeleteCookie,
1372                             GURL,
1373                             std::string,
1374                             int /* tab handle */,
1375                             bool /* result */)
1376 
1377 // This message triggers the collected cookies dialog for a specific tab.
1378 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_ShowCollectedCookiesDialog,
1379                             int /* tab handle */,
1380                             bool /* result */)
1381 
1382 // This message requests the external tab identified by the tab handle
1383 // passed in be closed.
1384 // Request:
1385 // Response:
1386 //   None expected
1387 IPC_MESSAGE_ROUTED0(AutomationMsg_CloseExternalTab)
1388 
1389 // This message requests that the external tab identified by the tab handle
1390 // runs unload handlers if any on the current page.
1391 // Request:
1392 //   -int: Tab handle
1393 //   -bool: result: true->unload, false->don't unload
1394 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_RunUnloadHandlers,
1395                             int,
1396                             bool)
1397 
1398 // This message sets the current zoom level on the tab
1399 // Request:
1400 //   -int: Tab handle
1401 //   -int: Zoom level. Values ZOOM_OUT = -1, RESET = 0, ZOOM_IN  = 1
1402 // Response:
1403 //   None expected
1404 IPC_MESSAGE_CONTROL2(AutomationMsg_SetZoomLevel,
1405                      int,
1406                      int)
1407 
1408 // Waits for tab count to reach target value.
1409 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_WaitForTabCountToBecome,
1410                             int /* browser handle */,
1411                             int /* target tab count */,
1412                             bool /* success */)
1413 
1414 // Waits for the infobar count to reach given number.
1415 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_WaitForInfoBarCount,
1416                             int /* tab handle */,
1417                             size_t /* target count */,
1418                             bool /* success */)
1419 
1420 // Waits for the autocomplete edit to receive focus.
1421 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_WaitForAutocompleteEditFocus,
1422                             int /* autocomplete edit handle */,
1423                             bool /* success */)
1424 
1425 // Loads all blocked plug-ins on the page.
1426 IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_LoadBlockedPlugins,
1427                             int /* tab handle */,
1428                             bool /* success */)
1429 
1430 // TODO(phajdan.jr): Remove this message.
1431 // Captures the entire page for the tab, including those portions not in
1432 // view, and saves the image as a PNG in the given file location.
1433 // This message is deprecated, use the JSON testing interface for
1434 // similar functionality.
1435 // Request:
1436 //   -int: Tab handle
1437 //   -FilePath: Path to save the captured image to
1438 // Response:
1439 //   -bool: Whether the method succeeded
1440 IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_CaptureEntirePageAsPNG_Deprecated,
1441                             int,
1442                             FilePath,
1443                             bool)
1444 
1445 // Notify the JavaScript engine in the render to change its parameters
1446 // while performing stress testing.
1447 IPC_MESSAGE_CONTROL3(AutomationMsg_JavaScriptStressTestControl,
1448                      int /* tab handle */,
1449                      int /* command */,
1450                      int /* type or run */)
1451 
1452 // This message posts a task to the PROCESS_LAUNCHER thread. Once processed
1453 // the response is sent back. This is useful when you want to make sure all
1454 // changes to the number of processes have completed.
1455 IPC_SYNC_MESSAGE_CONTROL0_0(AutomationMsg_WaitForProcessLauncherThreadToGoIdle)
1456 
1457 // Gets a handle of the browser that owns the given tab.
1458 IPC_SYNC_MESSAGE_CONTROL1_2(AutomationMsg_GetParentBrowserOfTab,
1459                             int /* tab handle */,
1460                             int /* browser handle */,
1461                             bool /* success */)
1462 
1463 // This message is an outgoing message from Chrome to an external host.
1464 // It is a notification that a popup window position or dimentions have
1465 // changed
1466 // Request:
1467 //   gfx::Rect - the bounds of the window
1468 // Response:
1469 //   None expected
1470 IPC_MESSAGE_ROUTED1(AutomationMsg_MoveWindow,
1471                     gfx::Rect /* window position and dimentions */)
1472 
1473 // Renderer -> browser messages.
1474 
1475 // Sent when the renderer has scheduled a client redirect to occur.
1476 IPC_MESSAGE_ROUTED2(AutomationMsg_WillPerformClientRedirect,
1477                     int64 /* frame_id */,
1478                     double /* # of seconds till redirect will be performed */)
1479 
1480 // Sent when the renderer has completed or canceled a client redirect for a
1481 // particular frame. This message may be sent multiple times for the same
1482 // redirect.
1483 IPC_MESSAGE_ROUTED1(AutomationMsg_DidCompleteOrCancelClientRedirect,
1484                     int64 /* frame_id */)
1485 
1486 
1487 // YOUR NEW MESSAGE MIGHT NOT BELONG HERE.
1488 // This is the section for renderer -> browser automation messages. If it is
1489 // an automation <-> browser message, put it above this section.
1490