Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(402)

Side by Side Diff: third_party/WebKit/LayoutTests/http/tests/resources/geolocation-mock.js

Issue 1367853002: Move GeolocationDispatcher into blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * geolocation-mock contains a mock implementation of GeolocationService and
3 * PermissionService.
4 */
5
6 "use strict";
7
8 let geolocationServiceMock = loadMojoModules(
9 'geolocationServiceMock',
10 ['third_party/WebKit/public/platform/modules/geolocation/geolocation.mojom',
11 'third_party/WebKit/public/platform/modules/permissions/permission.mojom',
12 'third_party/WebKit/public/platform/modules/permissions/permission_status.m ojom',
13 'mojo/public/js/router',
14 ]).then(mojo => {
15 let [geolocation, permission, permissionStatus, router] =
16 mojo.modules;
17
18 class GeolocationServiceMock {
Michael van Ouwerkerk 2016/05/04 13:52:16 Duplicating this mock seems less than ideal. Could
Sam McNally 2016/05/05 11:50:23 I found the file of magical path hacks so we can s
19 constructor(serviceRegistry) {
20 serviceRegistry.addServiceOverrideForTesting(
21 geolocation.GeolocationService.name,
22 handle => this.connectGeolocation(handle));
23
24 serviceRegistry.addServiceOverrideForTesting(
25 permission.PermissionService.name,
26 handle => this.connectPermission(handle));
27
28 this.serviceRegistry_ = serviceRegistry;
29 this.pendingRequests_ = [];
30 this.geoposition_ = null;
31 this.pendingPermissionRequests_ = [];
32 this.allowed_ = null;
33 this.rejectPermissionConnections_ = false;
34 this.rejectGeolocationConnections_ = false;
35 }
36
37 connectGeolocation(handle) {
38 if (this.rejectGeolocationConnections_) {
39 mojo.core.close(handle);
40 return;
41 }
42 this.geolocationStub_ = new geolocation.GeolocationService.stubClass(
43 this);
44 this.geolocationRouter_ = new router.Router(handle);
45 this.geolocationRouter_.setIncomingReceiver(this.geolocationStub_);
46 }
47
48 connectPermission(handle) {
49 if (this.rejectPermissionConnections_) {
50 mojo.core.close(handle);
51 return;
52 }
53 this.permissionStub_ = new permission.PermissionService.stubClass(this);
54 this.permissionRouter_ = new router.Router(handle);
55 this.permissionRouter_.setIncomingReceiver(this.permissionStub_);
56 }
57
58 setHighAccuracy(highAccuracy) {
59 }
60
61 queryNextPosition() {
62 let result = new Promise(
63 (resolve, reject) => this.pendingRequests_.push(resolve));
64 this.runPositionCallbacks_();
65 return result;
66 }
67
68 setGeolocationPosition(latitude, longitude, accuracy, altitude,
69 altitudeAccuracy, heading, speed) {
70 this.geoposition_ = new geolocation.Geoposition();
71 this.geoposition_.latitude = latitude;
72 this.geoposition_.longitude = longitude;
73 this.geoposition_.accuracy = accuracy;
74 this.geoposition_.altitude = altitude;
75 this.geoposition_.altitude_accuracy = altitudeAccuracy;
76 this.geoposition_.heading = heading;
77 this.geoposition_.speed = speed;
78 this.geoposition_.timestamp = new Date().getTime() / 1000;
79 this.geoposition_.error_message = '';
80 this.geoposition_.valid = true;
81 this.runPositionCallbacks_();
82 }
83
84 setGeolocationPositionUnavailableError(message) {
85 this.geoposition_ = new geolocation.Geoposition();
86 this.geoposition_.valid = false;
87 this.geoposition_.error_message = message;
88 this.geoposition_.error_code =
89 geolocation.Geoposition.ErrorCode.POSITION_UNAVAILABLE;
90 this.runPositionCallbacks_();
91 }
92
93 rejectPermissionConnections() {
94 this.rejectPermissionConnections_ = true;
95 }
96
97 rejectGeolocationConnections() {
98 this.rejectGeolocationConnections_ = true;
99 }
100
101 requestPermission(permission) {
102 let result = new Promise(
103 (resolve, reject) => this.pendingPermissionRequests_.push(resolve));
104 this.runPermissionCallbacks_();
105 return result;
106 }
107
108 runPositionCallbacks_() {
109 if (!this.geoposition_ || !this.pendingRequests_.length)
110 return;
111
112 while (this.pendingRequests_.length) {
113 this.pendingRequests_.pop()({geoposition: this.geoposition_});
114 }
115 this.geoposition_ = null;
116 }
117
118 runPermissionCallbacks_() {
119 if (this.allowed_ === null || !this.pendingPermissionRequests_.length)
120 return;
121
122 while (this.pendingPermissionRequests_.length) {
123 this.pendingPermissionRequests_.pop()(
124 {status: this.allowed_ ?
125 permissionStatus.PermissionStatus.ALLOWED:
126 permissionStatus.PermissionStatus.DENIED});
127 }
128 this.allowed_ = null;
129 }
130
131 setGeolocationPermission(allowed) {
132 this.allowed_ = allowed;
133 this.runPermissionCallbacks_();
134 }
135
136 }
137 return new GeolocationServiceMock(mojo.frameServiceRegistry);
138 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698