1// Copyright (c) 2012 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// Multiply-included file, no traditional include guard.
6#include <stdint.h>
7#include <map>
8#include <set>
9#include <string>
10#include <vector>
11
12#include "base/files/file_path.h"
13#include "base/memory/shared_memory.h"
14#include "base/process/process.h"
15#include "base/strings/string16.h"
16#include "base/strings/stringprintf.h"
17#include "base/values.h"
18#include "build/build_config.h"
19#include "chrome/common/autocomplete_match_type.h"
20#include "chrome/common/common_param_traits.h"
21#include "chrome/common/content_settings.h"
22#include "chrome/common/content_settings_pattern.h"
23#include "chrome/common/instant_types.h"
24#include "chrome/common/ntp_logging_events.h"
25#include "chrome/common/omnibox_focus_state.h"
26#include "chrome/common/search_provider.h"
27#include "components/nacl/common/nacl_types.h"
28#include "content/public/common/common_param_traits.h"
29#include "content/public/common/referrer.h"
30#include "content/public/common/top_controls_state.h"
31#include "extensions/common/stack_frame.h"
32#include "ipc/ipc_channel_handle.h"
33#include "ipc/ipc_message_macros.h"
34#include "ipc/ipc_platform_file.h"
35#include "third_party/skia/include/core/SkBitmap.h"
36#include "third_party/WebKit/public/web/WebCache.h"
37#include "third_party/WebKit/public/web/WebConsoleMessage.h"
38#include "ui/base/window_open_disposition.h"
39#include "ui/gfx/rect.h"
40
41// Singly-included section for enums and custom IPC traits.
42#ifndef CHROME_COMMON_RENDER_MESSAGES_H_
43#define CHROME_COMMON_RENDER_MESSAGES_H_
44
45// This enum is inside a struct so that we can forward-declare the struct in
46// others headers without having to include this one.
47struct ChromeViewHostMsg_GetPluginInfo_Status {
48  enum Value {
49    kAllowed,
50    kBlocked,
51    kBlockedByPolicy,
52    kClickToPlay,
53    kDisabled,
54    kNotFound,
55    kNPAPINotSupported,
56    kOutdatedBlocked,
57    kOutdatedDisallowed,
58    kUnauthorized,
59  };
60
61  ChromeViewHostMsg_GetPluginInfo_Status() : value(kAllowed) {}
62
63  Value value;
64};
65
66namespace IPC {
67
68template <>
69struct ParamTraits<ContentSettingsPattern> {
70  typedef ContentSettingsPattern param_type;
71  static void Write(Message* m, const param_type& p);
72  static bool Read(const Message* m, PickleIterator* iter, param_type* r);
73  static void Log(const param_type& p, std::string* l);
74};
75
76}  // namespace IPC
77
78#endif  // CHROME_COMMON_RENDER_MESSAGES_H_
79
80#define IPC_MESSAGE_START ChromeMsgStart
81
82IPC_ENUM_TRAITS_MAX_VALUE(ChromeViewHostMsg_GetPluginInfo_Status::Value,
83                          ChromeViewHostMsg_GetPluginInfo_Status::kUnauthorized)
84IPC_ENUM_TRAITS(OmniboxFocusChangeReason)
85IPC_ENUM_TRAITS(OmniboxFocusState)
86IPC_ENUM_TRAITS(search_provider::OSDDType)
87IPC_ENUM_TRAITS(search_provider::InstallState)
88IPC_ENUM_TRAITS(ThemeBackgroundImageAlignment)
89IPC_ENUM_TRAITS(ThemeBackgroundImageTiling)
90IPC_ENUM_TRAITS(blink::WebConsoleMessage::Level)
91IPC_ENUM_TRAITS(content::TopControlsState)
92
93IPC_STRUCT_TRAITS_BEGIN(ChromeViewHostMsg_GetPluginInfo_Status)
94IPC_STRUCT_TRAITS_MEMBER(value)
95IPC_STRUCT_TRAITS_END()
96
97// Output parameters for ChromeViewHostMsg_GetPluginInfo message.
98IPC_STRUCT_BEGIN(ChromeViewHostMsg_GetPluginInfo_Output)
99  IPC_STRUCT_MEMBER(ChromeViewHostMsg_GetPluginInfo_Status, status)
100  IPC_STRUCT_MEMBER(content::WebPluginInfo, plugin)
101  IPC_STRUCT_MEMBER(std::string, actual_mime_type)
102  IPC_STRUCT_MEMBER(std::string, group_identifier)
103  IPC_STRUCT_MEMBER(base::string16, group_name)
104IPC_STRUCT_END()
105
106IPC_STRUCT_TRAITS_BEGIN(ContentSettingsPattern::PatternParts)
107  IPC_STRUCT_TRAITS_MEMBER(scheme)
108  IPC_STRUCT_TRAITS_MEMBER(is_scheme_wildcard)
109  IPC_STRUCT_TRAITS_MEMBER(host)
110  IPC_STRUCT_TRAITS_MEMBER(has_domain_wildcard)
111  IPC_STRUCT_TRAITS_MEMBER(port)
112  IPC_STRUCT_TRAITS_MEMBER(is_port_wildcard)
113  IPC_STRUCT_TRAITS_MEMBER(path)
114  IPC_STRUCT_TRAITS_MEMBER(is_path_wildcard)
115IPC_STRUCT_TRAITS_END()
116
117IPC_STRUCT_TRAITS_BEGIN(ContentSettingPatternSource)
118  IPC_STRUCT_TRAITS_MEMBER(primary_pattern)
119  IPC_STRUCT_TRAITS_MEMBER(secondary_pattern)
120  IPC_STRUCT_TRAITS_MEMBER(setting)
121  IPC_STRUCT_TRAITS_MEMBER(source)
122  IPC_STRUCT_TRAITS_MEMBER(incognito)
123IPC_STRUCT_TRAITS_END()
124
125IPC_STRUCT_TRAITS_BEGIN(InstantSuggestion)
126  IPC_STRUCT_TRAITS_MEMBER(text)
127  IPC_STRUCT_TRAITS_MEMBER(metadata)
128IPC_STRUCT_TRAITS_END()
129
130IPC_STRUCT_TRAITS_BEGIN(InstantMostVisitedItem)
131  IPC_STRUCT_TRAITS_MEMBER(url)
132  IPC_STRUCT_TRAITS_MEMBER(title)
133IPC_STRUCT_TRAITS_END()
134
135IPC_STRUCT_TRAITS_BEGIN(RendererContentSettingRules)
136  IPC_STRUCT_TRAITS_MEMBER(image_rules)
137  IPC_STRUCT_TRAITS_MEMBER(script_rules)
138IPC_STRUCT_TRAITS_END()
139
140IPC_STRUCT_TRAITS_BEGIN(RGBAColor)
141  IPC_STRUCT_TRAITS_MEMBER(r)
142  IPC_STRUCT_TRAITS_MEMBER(g)
143  IPC_STRUCT_TRAITS_MEMBER(b)
144  IPC_STRUCT_TRAITS_MEMBER(a)
145IPC_STRUCT_TRAITS_END()
146
147IPC_STRUCT_TRAITS_BEGIN(ThemeBackgroundInfo)
148  IPC_STRUCT_TRAITS_MEMBER(using_default_theme)
149  IPC_STRUCT_TRAITS_MEMBER(background_color)
150  IPC_STRUCT_TRAITS_MEMBER(text_color)
151  IPC_STRUCT_TRAITS_MEMBER(link_color)
152  IPC_STRUCT_TRAITS_MEMBER(text_color_light)
153  IPC_STRUCT_TRAITS_MEMBER(header_color)
154  IPC_STRUCT_TRAITS_MEMBER(section_border_color)
155  IPC_STRUCT_TRAITS_MEMBER(theme_id)
156  IPC_STRUCT_TRAITS_MEMBER(image_horizontal_alignment)
157  IPC_STRUCT_TRAITS_MEMBER(image_vertical_alignment)
158  IPC_STRUCT_TRAITS_MEMBER(image_tiling)
159  IPC_STRUCT_TRAITS_MEMBER(image_height)
160  IPC_STRUCT_TRAITS_MEMBER(has_attribution)
161  IPC_STRUCT_TRAITS_MEMBER(logo_alternate)
162IPC_STRUCT_TRAITS_END()
163
164IPC_STRUCT_TRAITS_BEGIN(blink::WebCache::ResourceTypeStat)
165  IPC_STRUCT_TRAITS_MEMBER(count)
166  IPC_STRUCT_TRAITS_MEMBER(size)
167  IPC_STRUCT_TRAITS_MEMBER(liveSize)
168  IPC_STRUCT_TRAITS_MEMBER(decodedSize)
169IPC_STRUCT_TRAITS_END()
170
171IPC_STRUCT_TRAITS_BEGIN(blink::WebCache::ResourceTypeStats)
172  IPC_STRUCT_TRAITS_MEMBER(images)
173  IPC_STRUCT_TRAITS_MEMBER(cssStyleSheets)
174  IPC_STRUCT_TRAITS_MEMBER(scripts)
175  IPC_STRUCT_TRAITS_MEMBER(xslStyleSheets)
176  IPC_STRUCT_TRAITS_MEMBER(fonts)
177IPC_STRUCT_TRAITS_END()
178
179IPC_STRUCT_TRAITS_BEGIN(blink::WebCache::UsageStats)
180  IPC_STRUCT_TRAITS_MEMBER(minDeadCapacity)
181  IPC_STRUCT_TRAITS_MEMBER(maxDeadCapacity)
182  IPC_STRUCT_TRAITS_MEMBER(capacity)
183  IPC_STRUCT_TRAITS_MEMBER(liveSize)
184  IPC_STRUCT_TRAITS_MEMBER(deadSize)
185IPC_STRUCT_TRAITS_END()
186
187IPC_STRUCT_TRAITS_BEGIN(extensions::StackFrame)
188  IPC_STRUCT_TRAITS_MEMBER(line_number)
189  IPC_STRUCT_TRAITS_MEMBER(column_number)
190  IPC_STRUCT_TRAITS_MEMBER(source)
191  IPC_STRUCT_TRAITS_MEMBER(function)
192IPC_STRUCT_TRAITS_END()
193
194IPC_ENUM_TRAITS_MAX_VALUE(NTPLoggingEventType,
195                          NTP_NUM_EVENT_TYPES)
196
197//-----------------------------------------------------------------------------
198// RenderView messages
199// These are messages sent from the browser to the renderer process.
200
201// Tells the renderer to set its maximum cache size to the supplied value.
202IPC_MESSAGE_CONTROL3(ChromeViewMsg_SetCacheCapacities,
203                     size_t /* min_dead_capacity */,
204                     size_t /* max_dead_capacity */,
205                     size_t /* capacity */)
206
207// Tells the renderer to clear the cache.
208IPC_MESSAGE_CONTROL1(ChromeViewMsg_ClearCache,
209                     bool /* on_navigation */)
210
211// Set the top-level frame to the provided name.
212IPC_MESSAGE_ROUTED1(ChromeViewMsg_SetName,
213                    std::string /* frame_name */)
214
215// For WebUI testing, this message requests JavaScript to be executed at a time
216// which is late enough to not be thrown out, and early enough to be before
217// onload events are fired.
218IPC_MESSAGE_ROUTED1(ChromeViewMsg_WebUIJavaScript,
219                    base::string16  /* javascript */)
220
221// Set the content setting rules stored by the renderer.
222IPC_MESSAGE_CONTROL1(ChromeViewMsg_SetContentSettingRules,
223                     RendererContentSettingRules /* rules */)
224
225// Tells the render frame to load all blocked plugins with the given identifier.
226IPC_MESSAGE_ROUTED1(ChromeViewMsg_LoadBlockedPlugins,
227                    std::string /* identifier */)
228
229// Asks the renderer to send back stats on the WebCore cache broken down by
230// resource types.
231IPC_MESSAGE_CONTROL0(ChromeViewMsg_GetCacheResourceStats)
232
233// Tells the renderer to create a FieldTrial, and by using a 100% probability
234// for the FieldTrial, forces the FieldTrial to have assigned group name.
235IPC_MESSAGE_CONTROL2(ChromeViewMsg_SetFieldTrialGroup,
236                     std::string /* field trial name */,
237                     std::string /* group name that was assigned. */)
238
239// Asks the renderer to send back V8 heap stats.
240IPC_MESSAGE_CONTROL0(ChromeViewMsg_GetV8HeapStats)
241
242IPC_MESSAGE_ROUTED1(ChromeViewMsg_SetPageSequenceNumber,
243                    int /* page_seq_no */)
244
245IPC_MESSAGE_ROUTED0(ChromeViewMsg_DetermineIfPageSupportsInstant)
246
247IPC_MESSAGE_ROUTED1(ChromeViewMsg_SearchBoxSetDisplayInstantResults,
248                    bool /* display_instant_results */)
249
250IPC_MESSAGE_ROUTED2(ChromeViewMsg_SearchBoxFocusChanged,
251                    OmniboxFocusState /* new_focus_state */,
252                    OmniboxFocusChangeReason /* reason */)
253
254IPC_MESSAGE_ROUTED1(ChromeViewMsg_SearchBoxMarginChange, int /* start */)
255
256IPC_MESSAGE_ROUTED1(ChromeViewMsg_SearchBoxMostVisitedItemsChanged,
257                    std::vector<InstantMostVisitedItem> /* items */)
258
259IPC_MESSAGE_ROUTED1(ChromeViewMsg_SearchBoxPromoInformation,
260                    bool /* is_app_launcher_enabled */)
261
262IPC_MESSAGE_ROUTED1(ChromeViewMsg_SearchBoxSetInputInProgress,
263                    bool /* input_in_progress */)
264
265IPC_MESSAGE_ROUTED1(ChromeViewMsg_SearchBoxSetSuggestionToPrefetch,
266                    InstantSuggestion /* suggestion */)
267
268IPC_MESSAGE_ROUTED1(ChromeViewMsg_SearchBoxSubmit,
269                    base::string16 /* value */)
270
271IPC_MESSAGE_ROUTED1(ChromeViewMsg_SearchBoxThemeChanged,
272                    ThemeBackgroundInfo /* value */)
273
274IPC_MESSAGE_ROUTED2(ChromeViewMsg_ChromeIdentityCheckResult,
275                    base::string16 /* identity */,
276                    bool /* identity_match */)
277
278IPC_MESSAGE_ROUTED0(ChromeViewMsg_SearchBoxToggleVoiceSearch)
279
280// Toggles visual muting of the render view area. This is on when a constrained
281// window is showing.
282IPC_MESSAGE_ROUTED1(ChromeViewMsg_SetVisuallyDeemphasized,
283                    bool /* deemphazied */)
284
285// Sent on process startup to indicate whether this process is running in
286// incognito mode.
287IPC_MESSAGE_CONTROL1(ChromeViewMsg_SetIsIncognitoProcess,
288                     bool /* is_incognito_processs */)
289
290// Sent in response to ViewHostMsg_DidBlockDisplayingInsecureContent.
291IPC_MESSAGE_ROUTED1(ChromeViewMsg_SetAllowDisplayingInsecureContent,
292                    bool /* allowed */)
293
294// Sent in response to ViewHostMsg_DidBlockRunningInsecureContent.
295IPC_MESSAGE_ROUTED1(ChromeViewMsg_SetAllowRunningInsecureContent,
296                    bool /* allowed */)
297
298IPC_MESSAGE_ROUTED0(ChromeViewMsg_ReloadFrame)
299
300// Tells the renderer whether or not a file system access has been allowed.
301IPC_MESSAGE_ROUTED2(ChromeViewMsg_RequestFileSystemAccessAsyncResponse,
302                    int  /* request_id */,
303                    bool /* allowed */)
304
305// Sent when the profile changes the kSafeBrowsingEnabled preference.
306IPC_MESSAGE_ROUTED1(ChromeViewMsg_SetClientSidePhishingDetection,
307                    bool /* enable_phishing_detection */)
308
309// Asks the renderer for a thumbnail of the image selected by the most
310// recently opened context menu, if there is one. If the image's area
311// is greater than thumbnail_min_area it will be downscaled to
312// be within thumbnail_max_size. The possibly downsampled image will be
313// returned in a ChromeViewHostMsg_RequestThumbnailForContextNode_ACK message.
314IPC_MESSAGE_ROUTED2(ChromeViewMsg_RequestThumbnailForContextNode,
315                    int /* thumbnail_min_area_pixels */,
316                    gfx::Size /* thumbnail_max_size_pixels */)
317
318// Notifies the renderer whether hiding/showing the top controls is enabled,
319// what the current state should be, and whether or not to animate to the
320// proper state.
321IPC_MESSAGE_ROUTED3(ChromeViewMsg_UpdateTopControlsState,
322                    content::TopControlsState /* constraints */,
323                    content::TopControlsState /* current */,
324                    bool /* animate */)
325
326
327// Updates the window features of the render view.
328IPC_MESSAGE_ROUTED1(ChromeViewMsg_SetWindowFeatures,
329                    blink::WebWindowFeatures /* window_features */)
330
331IPC_MESSAGE_ROUTED2(ChromeViewHostMsg_RequestThumbnailForContextNode_ACK,
332                    SkBitmap /* thumbnail */,
333                    gfx::Size /* original size of the image */)
334
335#if defined(OS_ANDROID)
336// Asks the renderer to return information about whether the current page can
337// be treated as a webapp.
338IPC_MESSAGE_ROUTED1(ChromeViewMsg_RetrieveWebappInformation,
339                    GURL /* expected_url */)
340
341// Asks the renderer to return information about the given meta tag.
342IPC_MESSAGE_ROUTED2(ChromeViewMsg_RetrieveMetaTagContent,
343                    GURL /* expected_url */,
344                    std::string /* tag_name */ )
345#endif  // defined(OS_ANDROID)
346
347// chrome.principals messages ------------------------------------------------
348
349// Message sent from the renderer to the browser to get the list of browser
350// managed accounts for the given origin.
351IPC_SYNC_MESSAGE_CONTROL1_1(ChromeViewHostMsg_GetManagedAccounts,
352                            GURL /* current URL */,
353                            std::vector<std::string> /* managed accounts */)
354
355// Message sent from the renderer to the browser to show the browser account
356// management UI.
357IPC_MESSAGE_CONTROL0(ChromeViewHostMsg_ShowBrowserAccountManagementUI)
358
359// JavaScript related messages -----------------------------------------------
360
361// Tells the frame it is displaying an interstitial page.
362IPC_MESSAGE_ROUTED0(ChromeViewMsg_SetAsInterstitial)
363
364// Provides the renderer with the results of the browser's investigation into
365// why a recent main frame load failed (currently, just DNS probe result).
366// NetErrorHelper will receive this mesage and replace or update the error
367// page with more specific troubleshooting suggestions.
368IPC_MESSAGE_ROUTED1(ChromeViewMsg_NetErrorInfo,
369                    int /* DNS probe status */)
370
371// Provides the information needed by the renderer process to contact a
372// navigation correction service.  Handled by the NetErrorHelper.
373IPC_MESSAGE_ROUTED5(ChromeViewMsg_SetNavigationCorrectionInfo,
374                    GURL /* Navigation correction service base URL */,
375                    std::string /* language */,
376                    std::string /* origin_country */,
377                    std::string /* API key to use */,
378                    GURL /* Google Search URL to use */)
379
380//-----------------------------------------------------------------------------
381// Misc messages
382// These are messages sent from the renderer to the browser process.
383
384IPC_MESSAGE_CONTROL1(ChromeViewHostMsg_UpdatedCacheStats,
385                     blink::WebCache::UsageStats /* stats */)
386
387// Tells the browser that content in the current page was blocked due to the
388// user's content settings.
389IPC_MESSAGE_ROUTED1(ChromeViewHostMsg_ContentBlocked,
390                    ContentSettingsType /* type of blocked content */)
391
392// Sent by the renderer process to check whether access to web databases is
393// granted by content settings.
394IPC_SYNC_MESSAGE_CONTROL5_1(ChromeViewHostMsg_AllowDatabase,
395                            int /* render_frame_id */,
396                            GURL /* origin_url */,
397                            GURL /* top origin url */,
398                            base::string16 /* database name */,
399                            base::string16 /* database display name */,
400                            bool /* allowed */)
401
402// Sent by the renderer process to check whether access to DOM Storage is
403// granted by content settings.
404IPC_SYNC_MESSAGE_CONTROL4_1(ChromeViewHostMsg_AllowDOMStorage,
405                            int /* render_frame_id */,
406                            GURL /* origin_url */,
407                            GURL /* top origin url */,
408                            bool /* if true local storage, otherwise session */,
409                            bool /* allowed */)
410
411// Sent by the renderer process to check whether access to FileSystem is
412// granted by content settings.
413IPC_SYNC_MESSAGE_CONTROL3_1(ChromeViewHostMsg_RequestFileSystemAccessSync,
414                            int /* render_frame_id */,
415                            GURL /* origin_url */,
416                            GURL /* top origin url */,
417                            bool /* allowed */)
418
419// Sent by the renderer process to check whether access to FileSystem is
420// granted by content settings.
421IPC_MESSAGE_CONTROL4(ChromeViewHostMsg_RequestFileSystemAccessAsync,
422                    int /* render_frame_id */,
423                    int /* request_id */,
424                    GURL /* origin_url */,
425                    GURL /* top origin url */)
426
427// Sent by the renderer process to check whether access to Indexed DBis
428// granted by content settings.
429IPC_SYNC_MESSAGE_CONTROL4_1(ChromeViewHostMsg_AllowIndexedDB,
430                            int /* render_frame_id */,
431                            GURL /* origin_url */,
432                            GURL /* top origin url */,
433                            base::string16 /* database name */,
434                            bool /* allowed */)
435
436// Return information about a plugin for the given URL and MIME type.
437// In contrast to ViewHostMsg_GetPluginInfo in content/, this IPC call knows
438// about specific reasons why a plug-in can't be used, for example because it's
439// disabled.
440IPC_SYNC_MESSAGE_CONTROL4_1(ChromeViewHostMsg_GetPluginInfo,
441                            int /* render_frame_id */,
442                            GURL /* url */,
443                            GURL /* top origin url */,
444                            std::string /* mime_type */,
445                            ChromeViewHostMsg_GetPluginInfo_Output /* output */)
446
447// Returns whether any internal plugin supporting |mime_type| is registered and
448// enabled. Does not determine whether the plugin can actually be instantiated
449// (e.g. whether it has all its dependencies).
450// When the returned *|is_available| is true, |additional_param_names| and
451// |additional_param_values| contain the name-value pairs, if any, specified
452// for the *first* non-disabled plugin found that is registered for |mime_type|.
453IPC_SYNC_MESSAGE_CONTROL1_3(
454    ChromeViewHostMsg_IsInternalPluginAvailableForMimeType,
455    std::string /* mime_type */,
456    bool /* is_available */,
457    std::vector<base::string16> /* additional_param_names */,
458    std::vector<base::string16> /* additional_param_values */)
459
460// Informs the browser of updated frame names.
461IPC_MESSAGE_ROUTED2(ChromeViewHostMsg_UpdateFrameName,
462                    bool /* is_top_level */,
463                    std::string /* name */)
464
465#if defined(ENABLE_PLUGIN_INSTALLATION)
466// Tells the browser to search for a plug-in that can handle the given MIME
467// type. The result will be sent asynchronously to the routing ID
468// |placeholder_id|.
469IPC_MESSAGE_ROUTED2(ChromeViewHostMsg_FindMissingPlugin,
470                    int /* placeholder_id */,
471                    std::string /* mime_type */)
472
473// Notifies the browser that a missing plug-in placeholder has been removed, so
474// the corresponding PluginPlaceholderHost can be deleted.
475IPC_MESSAGE_ROUTED1(ChromeViewHostMsg_RemovePluginPlaceholderHost,
476                    int /* placeholder_id */)
477
478// Notifies a missing plug-in placeholder that a plug-in with name |plugin_name|
479// has been found.
480IPC_MESSAGE_ROUTED1(ChromeViewMsg_FoundMissingPlugin,
481                    base::string16 /* plugin_name */)
482
483// Notifies a missing plug-in placeholder that no plug-in has been found.
484IPC_MESSAGE_ROUTED0(ChromeViewMsg_DidNotFindMissingPlugin)
485
486// Notifies a missing plug-in placeholder that we have started downloading
487// the plug-in.
488IPC_MESSAGE_ROUTED0(ChromeViewMsg_StartedDownloadingPlugin)
489
490// Notifies a missing plug-in placeholder that we have finished downloading
491// the plug-in.
492IPC_MESSAGE_ROUTED0(ChromeViewMsg_FinishedDownloadingPlugin)
493
494// Notifies a missing plug-in placeholder that there was an error downloading
495// the plug-in.
496IPC_MESSAGE_ROUTED1(ChromeViewMsg_ErrorDownloadingPlugin,
497                    std::string /* message */)
498#endif  // defined(ENABLE_PLUGIN_INSTALLATION)
499
500// Notifies a missing plug-in placeholder that the user cancelled downloading
501// the plug-in.
502IPC_MESSAGE_ROUTED0(ChromeViewMsg_CancelledDownloadingPlugin)
503
504// Tells the browser to open chrome://plugins in a new tab. We use a separate
505// message because renderer processes aren't allowed to directly navigate to
506// chrome:// URLs.
507IPC_MESSAGE_ROUTED0(ChromeViewHostMsg_OpenAboutPlugins)
508
509// Tells the browser that there was an error loading a plug-in.
510IPC_MESSAGE_ROUTED1(ChromeViewHostMsg_CouldNotLoadPlugin,
511                    base::FilePath /* plugin_path */)
512
513// Tells the browser that we blocked a plug-in because NPAPI is not supported.
514IPC_MESSAGE_ROUTED1(ChromeViewHostMsg_NPAPINotSupported,
515                    std::string /* identifer */)
516
517// Tells the renderer that the NPAPI cannot be used. For example Ash on windows.
518IPC_MESSAGE_ROUTED0(ChromeViewMsg_NPAPINotSupported)
519
520// Notification that the page has an OpenSearch description document
521// associated with it.
522IPC_MESSAGE_ROUTED3(ChromeViewHostMsg_PageHasOSDD,
523                    GURL /* page_url */,
524                    GURL /* osdd_url */,
525                    search_provider::OSDDType)
526
527// Find out if the given url's security origin is installed as a search
528// provider.
529IPC_SYNC_MESSAGE_ROUTED2_1(ChromeViewHostMsg_GetSearchProviderInstallState,
530                           GURL /* page url */,
531                           GURL /* inquiry url */,
532                           search_provider::InstallState /* install */)
533
534// Sends back stats about the V8 heap.
535IPC_MESSAGE_CONTROL2(ChromeViewHostMsg_V8HeapStats,
536                     int /* size of heap (allocated from the OS) */,
537                     int /* bytes in use */)
538
539// Request for a DNS prefetch of the names in the array.
540// NameList is typedef'ed std::vector<std::string>
541IPC_MESSAGE_CONTROL1(ChromeViewHostMsg_DnsPrefetch,
542                     std::vector<std::string> /* hostnames */)
543
544// Request for preconnect to host providing resource specified by URL
545IPC_MESSAGE_CONTROL1(ChromeViewHostMsg_Preconnect,
546                     GURL /* preconnect target url */)
547
548// Notifies when a plugin couldn't be loaded because it's outdated.
549IPC_MESSAGE_ROUTED2(ChromeViewHostMsg_BlockedOutdatedPlugin,
550                    int /* placeholder ID */,
551                    std::string /* plug-in group identifier */)
552
553// Notifies when a plugin couldn't be loaded because it requires
554// user authorization.
555IPC_MESSAGE_ROUTED2(ChromeViewHostMsg_BlockedUnauthorizedPlugin,
556                    base::string16 /* name */,
557                    std::string /* plug-in group identifier */)
558
559// Provide the browser process with information about the WebCore resource
560// cache and current renderer framerate.
561IPC_MESSAGE_CONTROL1(ChromeViewHostMsg_ResourceTypeStats,
562                     blink::WebCache::ResourceTypeStats)
563
564// Message sent from the renderer to the browser to notify it of a
565// window.print() call which should cancel the prerender. The message is sent
566// only when the renderer is prerendering.
567IPC_MESSAGE_ROUTED0(ChromeViewHostMsg_CancelPrerenderForPrinting)
568
569#if defined(ENABLE_EXTENSIONS)
570// Sent by the renderer to check if a URL has permission to trigger a clipboard
571// read/write operation from the DOM.
572IPC_SYNC_MESSAGE_CONTROL1_1(ChromeViewHostMsg_CanTriggerClipboardRead,
573                            GURL /* origin */,
574                            bool /* allowed */)
575IPC_SYNC_MESSAGE_CONTROL1_1(ChromeViewHostMsg_CanTriggerClipboardWrite,
576                            GURL /* origin */,
577                            bool /* allowed */)
578#endif
579
580// Sent when the renderer was prevented from displaying insecure content in
581// a secure page by a security policy.  The page may appear incomplete.
582IPC_MESSAGE_ROUTED0(ChromeViewHostMsg_DidBlockDisplayingInsecureContent)
583
584// Sent when the renderer was prevented from running insecure content in
585// a secure origin by a security policy.  The page may appear incomplete.
586IPC_MESSAGE_ROUTED0(ChromeViewHostMsg_DidBlockRunningInsecureContent)
587
588#if defined(OS_ANDROID)
589// Contains info about whether the current page can be treated as a webapp.
590IPC_MESSAGE_ROUTED4(ChromeViewHostMsg_DidRetrieveWebappInformation,
591                    bool /* success */,
592                    bool /* is_mobile_webapp_capable */,
593                    bool /* is_apple_mobile_webapp_capable */,
594                    GURL /* expected_url */)
595
596IPC_MESSAGE_ROUTED4(ChromeViewHostMsg_DidRetrieveMetaTagContent,
597                    bool /* success */,
598                    std::string /* tag_name */,
599                    std::string /* tag_content */,
600                    GURL /* expected_url */)
601#endif  // defined(OS_ANDROID)
602
603// The currently displayed PDF has an unsupported feature.
604IPC_MESSAGE_ROUTED0(ChromeViewHostMsg_PDFHasUnsupportedFeature)
605
606// Brings up SaveAs... dialog to save specified URL.
607IPC_MESSAGE_ROUTED2(ChromeViewHostMsg_PDFSaveURLAs,
608                    GURL /* url */,
609                    content::Referrer /* referrer */)
610
611// Updates the content restrictions, i.e. to disable print/copy.
612IPC_MESSAGE_ROUTED1(ChromeViewHostMsg_PDFUpdateContentRestrictions,
613                    int /* restrictions */)
614
615// Brings up a Password... dialog for protected documents.
616IPC_SYNC_MESSAGE_ROUTED1_1(ChromeViewHostMsg_PDFModalPromptForPassword,
617                           std::string /* prompt */,
618                           std::string /* actual_value */)
619
620// This message indicates the error appeared in the frame.
621IPC_MESSAGE_ROUTED1(ChromeViewHostMsg_FrameLoadingError,
622                    int /* error */)
623
624// This message indicates the monitored frame loading had completed.
625IPC_MESSAGE_ROUTED0(ChromeViewHostMsg_FrameLoadingCompleted)
626
627// Logs events from InstantExtended New Tab Pages.
628IPC_MESSAGE_ROUTED2(ChromeViewHostMsg_LogEvent,
629                    int /* page_seq_no */,
630                    NTPLoggingEventType /* event */)
631
632// Logs an impression on one of the Most Visited tile on the InstantExtended
633// New Tab Page.
634IPC_MESSAGE_ROUTED3(ChromeViewHostMsg_LogMostVisitedImpression,
635                    int /* page_seq_no */,
636                    int /* position */,
637                    base::string16 /* provider */)
638
639// Logs a navigation on one of the Most Visited tile on the InstantExtended
640// New Tab Page.
641IPC_MESSAGE_ROUTED3(ChromeViewHostMsg_LogMostVisitedNavigation,
642                    int /* page_seq_no */,
643                    int /* position */,
644                    base::string16 /* provider */)
645
646// The Instant page asks for Chrome identity check against |identity|.
647IPC_MESSAGE_ROUTED2(ChromeViewHostMsg_ChromeIdentityCheck,
648                    int /* page_seq_no */,
649                    base::string16 /* identity */)
650
651// Tells InstantExtended to set the omnibox focus state.
652IPC_MESSAGE_ROUTED2(ChromeViewHostMsg_FocusOmnibox,
653                    int /* page_seq_no */,
654                    OmniboxFocusState /* state */)
655
656// Tells InstantExtended to paste text into the omnibox.  If text is empty,
657// the clipboard contents will be pasted. This causes the omnibox dropdown to
658// open.
659IPC_MESSAGE_ROUTED2(ChromeViewHostMsg_PasteAndOpenDropdown,
660                    int /* page_seq_no */,
661                    base::string16 /* text to be pasted */)
662
663// Tells InstantExtended whether the embedded search API is supported.
664// See http://dev.chromium.org/embeddedsearch
665IPC_MESSAGE_ROUTED2(ChromeViewHostMsg_InstantSupportDetermined,
666                    int /* page_seq_no */,
667                    bool /* result */)
668
669// Tells InstantExtended to delete a most visited item.
670IPC_MESSAGE_ROUTED2(ChromeViewHostMsg_SearchBoxDeleteMostVisitedItem,
671                    int /* page_seq_no */,
672                    GURL /* url */)
673
674// Tells InstantExtended to navigate the active tab to a possibly privileged
675// URL.
676IPC_MESSAGE_ROUTED4(ChromeViewHostMsg_SearchBoxNavigate,
677                    int /* page_seq_no */,
678                    GURL /* destination */,
679                    WindowOpenDisposition /* disposition */,
680                    bool /*is_most_visited_item_url*/)
681
682// Tells InstantExtended to undo all most visited item deletions.
683IPC_MESSAGE_ROUTED1(ChromeViewHostMsg_SearchBoxUndoAllMostVisitedDeletions,
684                    int /* page_seq_no */)
685
686// Tells InstantExtended to undo one most visited item deletion.
687IPC_MESSAGE_ROUTED2(ChromeViewHostMsg_SearchBoxUndoMostVisitedDeletion,
688                    int /* page_seq_no */,
689                    GURL /* url */)
690
691// Tells InstantExtended whether the page supports voice search.
692IPC_MESSAGE_ROUTED2(ChromeViewHostMsg_SetVoiceSearchSupported,
693                    int /* page_seq_no */,
694                    bool /* supported */)
695
696// Tells the renderer a list of URLs which should be bounced back to the browser
697// process so that they can be assigned to an Instant renderer.
698IPC_MESSAGE_CONTROL2(ChromeViewMsg_SetSearchURLs,
699                     std::vector<GURL> /* search_urls */,
700                     GURL /* new_tab_page_url */)
701
702// TODO(thestig) Eventually separate out all the extensions messages.
703#if defined(ENABLE_EXTENSIONS)
704// Tells listeners that a detailed message was reported to the console by
705// WebKit.
706IPC_MESSAGE_ROUTED4(ChromeViewHostMsg_DetailedConsoleMessageAdded,
707                    base::string16 /* message */,
708                    base::string16 /* source */,
709                    extensions::StackTrace /* stack trace */,
710                    int32 /* severity level */)
711#endif
712
713#if defined(ENABLE_PLUGINS)
714// Sent by the renderer to check if crash reporting is enabled.
715IPC_SYNC_MESSAGE_CONTROL0_1(ChromeViewHostMsg_IsCrashReportingEnabled,
716                            bool /* enabled */)
717#endif
718