1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
24a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
34a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// found in the LICENSE file.
44a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Multiply-included message file, no traditional include guard.
64a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include <string>
74a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
84a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "base/basictypes.h"
94a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/common/automation_constants.h"
10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/common/content_settings.h"
114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/common/security_style.h"
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/common/common_param_traits.h"
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/common/page_type.h"
14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/common/webkit_param_traits.h"
15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "ipc/ipc_message_macros.h"
16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "ipc/ipc_message_utils.h"
17dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "net/base/host_port_pair.h"
184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "net/base/upload_data.h"
1972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/gfx/rect.h"
204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Singly-included section, not yet converted.
22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#ifndef CHROME_COMMON_AUTOMATION_MESSAGES_H__
23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#define CHROME_COMMON_AUTOMATION_MESSAGES_H__
24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochstruct AutomationMsg_Find_Params {
264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // Unused value, which exists only for backwards compat.
274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  int unused;
284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // The word(s) to find on the page.
304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  string16 search_string;
314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // Whether to search forward or backward within the page.
334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  bool forward;
344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // Whether search should be Case sensitive.
364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  bool match_case;
374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // Whether this operation is first request (Find) or a follow-up (FindNext).
394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  bool find_next;
404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch};
414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
4221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenstruct AutomationURLResponse {
4321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  AutomationURLResponse();
4421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  AutomationURLResponse(const std::string& mime_type,
4521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                        const std::string& headers,
4621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                        int64 content_length,
4721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                        const base::Time& last_modified,
4821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                        const std::string& redirect_url,
49dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                        int redirect_status,
50dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                        const net::HostPortPair& host_socket_address);
5121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  ~AutomationURLResponse();
5221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
5321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  std::string mime_type;
5421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  std::string headers;
5521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  int64 content_length;
5621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  base::Time last_modified;
5721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  std::string redirect_url;
5821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  int redirect_status;
59dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  net::HostPortPair socket_address;
6021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen};
6121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
6221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenstruct ExternalTabSettings {
6321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  ExternalTabSettings();
6421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  ExternalTabSettings(gfx::NativeWindow parent,
6521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                      const gfx::Rect& dimensions,
6621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                      unsigned int style,
67ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                      bool is_incognito,
6821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                      bool load_requests_via_automation,
6921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                      bool handle_top_level_requests,
7021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                      const GURL& initial_url,
7121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                      const GURL& referrer,
7221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                      bool infobars_enabled,
7321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                      bool route_all_top_level_navigations);
7421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  ~ExternalTabSettings();
7521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
7621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  gfx::NativeWindow parent;
7721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  gfx::Rect dimensions;
7821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  unsigned int style;
79ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  bool is_incognito;
8021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  bool load_requests_via_automation;
8121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  bool handle_top_level_requests;
8221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  GURL initial_url;
8321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  GURL referrer;
8421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  bool infobars_enabled;
8521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  bool route_all_top_level_navigations;
8621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen};
8721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
8821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenstruct NavigationInfo {
8921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  NavigationInfo();
9021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  NavigationInfo(int navigation_type,
9121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                 int relative_offset,
9221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                 int navigation_index,
9321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                 const std::wstring& title,
9421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                 const GURL& url,
9521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                 const GURL& referrer,
9621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                 SecurityStyle security_style,
9721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                 bool displayed_insecure_content,
9821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                 bool ran_insecure_content);
9921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  ~NavigationInfo();
10021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
10121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  int navigation_type;
10221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  int relative_offset;
10321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  int navigation_index;
10421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  std::wstring title;
10521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  GURL url;
10621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  GURL referrer;
10721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  SecurityStyle security_style;
10821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  bool displayed_insecure_content;
10921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  bool ran_insecure_content;
11021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen};
11121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
11221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen// A stripped down version of ContextMenuParams in webkit/glue/context_menu.h.
11321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenstruct MiniContextMenuParams {
11421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  MiniContextMenuParams();
11521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  MiniContextMenuParams(int screen_x,
11621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                        int screen_y,
11721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                        const GURL& link_url,
11821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                        const GURL& unfiltered_link_url,
11921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                        const GURL& src_url,
12021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                        const GURL& page_url,
12121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                        const GURL& frame_url);
12221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  ~MiniContextMenuParams();
12321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
12421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  // The x coordinate for displaying the menu.
12521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  int screen_x;
12621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
12721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  // The y coordinate for displaying the menu.
12821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  int screen_y;
12921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
13021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  // This is the URL of the link that encloses the node the context menu was
13121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  // invoked on.
13221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  GURL link_url;
13321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
13421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  // The link URL to be used ONLY for "copy link address". We don't validate
13521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  // this field in the frontend process.
13621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  GURL unfiltered_link_url;
13721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
13821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  // This is the source URL for the element that the context menu was
13921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  // invoked on.  Example of elements with source URLs are img, audio, and
14021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  // video.
14121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  GURL src_url;
14221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
14321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  // This is the URL of the top level page that the context menu was invoked
14421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  // on.
14521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  GURL page_url;
14621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
14721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  // This is the URL of the subframe that the context menu was invoked on.
14821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  GURL frame_url;
14921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen};
15021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
15121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenstruct AttachExternalTabParams {
15221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  AttachExternalTabParams();
15321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  AttachExternalTabParams(uint64 cookie,
15421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                          const GURL& url,
15521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                          const gfx::Rect& dimensions,
15621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                          int disposition,
15721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                          bool user_gesture,
15821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                          const std::string& profile_name);
15921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  ~AttachExternalTabParams();
16021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
16121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  uint64 cookie;
16221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  GURL url;
16321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  gfx::Rect dimensions;
16421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  int disposition;
16521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  bool user_gesture;
16621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  std::string profile_name;
16721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen};
16821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
16921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#if defined(OS_WIN)
17021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
17121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenstruct Reposition_Params {
17221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  HWND window;
17321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  HWND window_insert_after;
17421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  int left;
17521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  int top;
17621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  int width;
17721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  int height;
17821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  int flags;
17921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  bool set_parent;
18021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  HWND parent_window;
18121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen};
18221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
18321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#endif  // defined(OS_WIN)
18421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
18521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenstruct AutomationURLRequest {
18621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  AutomationURLRequest();
18721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  AutomationURLRequest(const std::string& url,
18821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                       const std::string& method,
18921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                       const std::string& referrer,
19021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                       const std::string& extra_request_headers,
19121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                       scoped_refptr<net::UploadData> upload_data,
19221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                       int resource_type,
19321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                       int load_flags);
19421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  ~AutomationURLRequest();
19521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
19621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  std::string url;
19721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  std::string method;
19821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  std::string referrer;
19921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  std::string extra_request_headers;
20021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  scoped_refptr<net::UploadData> upload_data;
20121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  int resource_type;  // see webkit/glue/resource_type.h
20221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  int load_flags; // see net/base/load_flags.h
20321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen};
20421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
2054a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochnamespace IPC {
2064a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
2074a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochtemplate <>
2084a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochstruct ParamTraits<AutomationMsg_Find_Params> {
2094a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  typedef AutomationMsg_Find_Params param_type;
21021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Write(Message* m, const param_type& p);
21121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static bool Read(const Message* m, void** iter, param_type* p);
21221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Log(const param_type& p, std::string* l);
2134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch};
2144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
2154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochtemplate <>
2164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochstruct ParamTraits<AutomationMsg_NavigationResponseValues> {
2174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  typedef AutomationMsg_NavigationResponseValues param_type;
21821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Write(Message* m, const param_type& p);
21921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static bool Read(const Message* m, void** iter, param_type* p);
22021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Log(const param_type& p, std::string* l);
2214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch};
2224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
2234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochtemplate <>
2244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochstruct ParamTraits<AutomationMsg_ExtensionResponseValues> {
2254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  typedef AutomationMsg_ExtensionResponseValues param_type;
22621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Write(Message* m, const param_type& p);
22721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static bool Read(const Message* m, void** iter, param_type* p);
22821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Log(const param_type& p, std::string* l);
2294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch};
2304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
2314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochtemplate <>
2324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochstruct ParamTraits<AutomationMsg_ExtensionProperty> {
2334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  typedef AutomationMsg_ExtensionProperty param_type;
23421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Write(Message* m, const param_type& p);
23521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static bool Read(const Message* m, void** iter, param_type* p);
23621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Log(const param_type& p, std::string* l);
2374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch};
2384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
2394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochtemplate <>
2404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochstruct ParamTraits<SecurityStyle> {
2414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  typedef SecurityStyle param_type;
24221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Write(Message* m, const param_type& p);
24321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static bool Read(const Message* m, void** iter, param_type* p);
24421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Log(const param_type& p, std::string* l);
2454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch};
2464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
2474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochtemplate <>
2484a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochstruct ParamTraits<PageType> {
2494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  typedef PageType param_type;
25021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Write(Message* m, const param_type& p);
25121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static bool Read(const Message* m, void** iter, param_type* p);
25221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Log(const param_type& p, std::string* l);
2534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch};
2544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
2554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#if defined(OS_WIN)
2564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
2574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Traits for SetWindowPos_Params structure to pack/unpack.
2584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochtemplate <>
2594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochstruct ParamTraits<Reposition_Params> {
2604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  typedef Reposition_Params param_type;
2614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  static void Write(Message* m, const param_type& p) {
2624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    WriteParam(m, p.window);
2634a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    WriteParam(m, p.window_insert_after);
2644a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    WriteParam(m, p.left);
2654a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    WriteParam(m, p.top);
2664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    WriteParam(m, p.width);
2674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    WriteParam(m, p.height);
2684a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    WriteParam(m, p.flags);
2694a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    WriteParam(m, p.set_parent);
2704a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    WriteParam(m, p.parent_window);
2714a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  }
2724a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  static bool Read(const Message* m, void** iter, param_type* p) {
2734a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    return ReadParam(m, iter, &p->window) &&
2744a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch           ReadParam(m, iter, &p->window_insert_after) &&
2754a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch           ReadParam(m, iter, &p->left) &&
2764a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch           ReadParam(m, iter, &p->top) &&
2774a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch           ReadParam(m, iter, &p->width) &&
2784a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch           ReadParam(m, iter, &p->height) &&
2794a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch           ReadParam(m, iter, &p->flags) &&
2804a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch           ReadParam(m, iter, &p->set_parent) &&
2814a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch           ReadParam(m, iter, &p->parent_window);
2824a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  }
2834a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  static void Log(const param_type& p, std::string* l) {
2844a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    l->append("(");
2854a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    LogParam(p.window, l);
2864a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    l->append(", ");
2874a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    LogParam(p.window_insert_after, l);
2884a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    l->append(", ");
2894a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    LogParam(p.left, l);
2904a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    l->append(", ");
2914a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    LogParam(p.top, l);
2924a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    l->append(", ");
2934a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    LogParam(p.width, l);
2944a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    l->append(", ");
2954a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    LogParam(p.height, l);
2964a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    l->append(", ");
2974a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    LogParam(p.flags, l);
2984a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    l->append(", ");
2994a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    LogParam(p.set_parent, l);
3004a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    l->append(", ");
3014a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    LogParam(p.parent_window, l);
3024a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    l->append(")");
3034a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  }
3044a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch};
3054a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#endif  // defined(OS_WIN)
3064a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
3074a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Traits for AutomationURLRequest structure to pack/unpack.
3084a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochtemplate <>
3094a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochstruct ParamTraits<AutomationURLRequest> {
3104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  typedef AutomationURLRequest param_type;
31121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Write(Message* m, const param_type& p);
31221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static bool Read(const Message* m, void** iter, param_type* p);
31321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Log(const param_type& p, std::string* l);
3144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch};
3154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
3164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Traits for AutomationURLResponse structure to pack/unpack.
3174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochtemplate <>
3184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochstruct ParamTraits<AutomationURLResponse> {
3194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  typedef AutomationURLResponse param_type;
32021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Write(Message* m, const param_type& p);
32121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static bool Read(const Message* m, void** iter, param_type* p);
32221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Log(const param_type& p, std::string* l);
3234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch};
3244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
3254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Traits for ExternalTabSettings structure to pack/unpack.
3264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochtemplate <>
3274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochstruct ParamTraits<ExternalTabSettings> {
3284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  typedef ExternalTabSettings param_type;
32921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Write(Message* m, const param_type& p);
33021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static bool Read(const Message* m, void** iter, param_type* p);
33121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Log(const param_type& p, std::string* l);
3324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch};
3334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
3344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Traits for NavigationInfo structure to pack/unpack.
3354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochtemplate <>
3364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochstruct ParamTraits<NavigationInfo> {
3374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  typedef NavigationInfo param_type;
33821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Write(Message* m, const param_type& p);
33921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static bool Read(const Message* m, void** iter, param_type* p);
34021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Log(const param_type& p, std::string* l);
3414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch};
3424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
3434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Traits for MiniContextMenuParams structure to pack/unpack.
3444a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochtemplate <>
3454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochstruct ParamTraits<MiniContextMenuParams> {
3464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  typedef MiniContextMenuParams param_type;
34721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Write(Message* m, const param_type& p);
34821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static bool Read(const Message* m, void** iter, param_type* p);
34921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Log(const param_type& p, std::string* l);
3504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch};
3514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
3524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochtemplate <>
3534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochstruct ParamTraits<AttachExternalTabParams> {
3544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  typedef AttachExternalTabParams param_type;
35521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Write(Message* m, const param_type& p);
35621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static bool Read(const Message* m, void** iter, param_type* p);
35721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void Log(const param_type& p, std::string* l);
3584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch};
3594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
3604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}  // namespace IPC
3614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
362ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif  // CHROME_COMMON_AUTOMATION_MESSAGES_H__
363ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
364ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Keep this internal message file unchanged to preserve line numbering
365ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// (and hence the dubious __LINE__-based message numberings) across versions.
36621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/common/automation_messages_internal.h"
3674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
368