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// IPC messages for geolocation.
6// Multiply-included message file, hence no include guard.
7
8#include "content/public/common/geoposition.h"
9#include "ipc/ipc_message_macros.h"
10#include "url/gurl.h"
11
12#define IPC_MESSAGE_START GeolocationMsgStart
13
14IPC_ENUM_TRAITS_MAX_VALUE(content::Geoposition::ErrorCode,
15                          content::Geoposition::ERROR_CODE_LAST)
16
17IPC_STRUCT_TRAITS_BEGIN(content::Geoposition)
18  IPC_STRUCT_TRAITS_MEMBER(latitude)
19  IPC_STRUCT_TRAITS_MEMBER(longitude)
20  IPC_STRUCT_TRAITS_MEMBER(altitude)
21  IPC_STRUCT_TRAITS_MEMBER(accuracy)
22  IPC_STRUCT_TRAITS_MEMBER(altitude_accuracy)
23  IPC_STRUCT_TRAITS_MEMBER(heading)
24  IPC_STRUCT_TRAITS_MEMBER(speed)
25  IPC_STRUCT_TRAITS_MEMBER(timestamp)
26  IPC_STRUCT_TRAITS_MEMBER(error_code)
27  IPC_STRUCT_TRAITS_MEMBER(error_message)
28IPC_STRUCT_TRAITS_END()
29
30// Messages sent from the browser to the renderer.
31
32// Reply in response to GeolocationHostMsg_RequestPermission.
33IPC_MESSAGE_ROUTED2(GeolocationMsg_PermissionSet,
34                    int /* bridge_id */,
35                    bool /* is_allowed */)
36
37// Sent after GeolocationHostMsg_StartUpdating iff the user has granted
38// permission and we have a position available or an error occurs (such as
39// permission denied, position unavailable, etc.)
40IPC_MESSAGE_ROUTED1(GeolocationMsg_PositionUpdated,
41                    content::Geoposition /* geoposition */)
42
43// Messages sent from the renderer to the browser.
44
45// The |bridge_id| representing |host| is requesting permission to access
46// geolocation position. This will be replied by GeolocationMsg_PermissionSet.
47IPC_MESSAGE_ROUTED3(GeolocationHostMsg_RequestPermission,
48                     int /* bridge_id */,
49                     GURL /* GURL of the frame requesting geolocation */,
50                     bool /* user_gesture */)
51
52// The |bridge_id| representing |GURL| is cancelling its previous permission
53// request to access geolocation position.
54IPC_MESSAGE_ROUTED2(GeolocationHostMsg_CancelPermissionRequest,
55                    int /* bridge_id */,
56                    GURL /* GURL of the frame */)
57
58// The render view requests the Geolocation service to start updating.
59// This is an asynchronous call, and the browser process may eventually reply
60// with the updated geoposition, or an error (access denied, location
61// unavailable, etc.)
62IPC_MESSAGE_ROUTED2(GeolocationHostMsg_StartUpdating,
63                     GURL /* GURL of the frame requesting geolocation */,
64                     bool /* enable_high_accuracy */)
65
66// The  render view requests Geolocation service to stop updating.
67// Note that the geolocation service may continue to fetch geolocation data
68// for other origins.
69IPC_MESSAGE_ROUTED0(GeolocationHostMsg_StopUpdating)
70