Home | History | Annotate | Download | only in common
      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