1/*
2 * Copyright (C) 2010-2018 Apple Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16 * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
17 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
20 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
21 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 */
24
25#include "config.h"
26
27#include "WebProcess.h"
28
29#include "ArgumentCoders.h"
30#include "CacheModel.h"
31#include "DataReference.h"
32#include "Decoder.h"
33#if ENABLE(GAMEPAD)
34#include "GamepadData.h"
35#endif
36#include "HandleMessage.h"
37#if (ENABLE(MEDIA_STREAM) && ENABLE(SANDBOX_EXTENSIONS))
38#include "MediaDeviceSandboxExtensions.h"
39#endif
40#include "SandboxExtension.h"
41#include "TextCheckerState.h"
42#include "UserData.h"
43#include "WebCoreArgumentCoders.h"
44#include "WebPageCreationParameters.h"
45#if ENABLE(SERVICE_WORKER)
46#include "WebPreferencesStore.h"
47#endif
48#include "WebProcessCreationParameters.h"
49#include "WebProcessDataStoreParameters.h"
50#include "WebProcessMessages.h"
51#include "WebsiteData.h"
52#include "WebsiteDataType.h"
53#include <WebCore/MessagePortIdentifier.h>
54#include <WebCore/MessageWithMessagePorts.h>
55#if ENABLE(MEDIA_STREAM)
56#include <WebCore/MockMediaDevice.h>
57#endif
58#include <WebCore/PrewarmInformation.h>
59#if PLATFORM(MAC)
60#include <WebCore/ScreenProperties.h>
61#endif
62#include <WebCore/SecurityOriginData.h>
63#include <pal/SessionID.h>
64#include <wtf/HashMap.h>
65#include <wtf/OptionSet.h>
66#include <wtf/Vector.h>
67#include <wtf/WallTime.h>
68#include <wtf/text/WTFString.h>
69
70namespace Messages {
71
72namespace WebProcess {
73
74void FetchWebsiteData::callReply(IPC::Decoder& decoder, CompletionHandler<void(WebKit::WebsiteData&&)>&& completionHandler)
75{
76 Optional<WebKit::WebsiteData> websiteData;
77 decoder >> websiteData;
78 if (!websiteData) {
79 ASSERT_NOT_REACHED();
80 return;
81 }
82 completionHandler(WTFMove(*websiteData));
83}
84
85void FetchWebsiteData::cancelReply(CompletionHandler<void(WebKit::WebsiteData&&)>&& completionHandler)
86{
87 completionHandler({ });
88}
89
90void FetchWebsiteData::send(std::unique_ptr<IPC::Encoder>&& encoder, IPC::Connection& connection, const WebKit::WebsiteData& websiteData)
91{
92 *encoder << websiteData;
93 connection.sendSyncReply(WTFMove(encoder));
94}
95
96void DeleteWebsiteData::callReply(IPC::Decoder& decoder, CompletionHandler<void()>&& completionHandler)
97{
98 completionHandler();
99}
100
101void DeleteWebsiteData::cancelReply(CompletionHandler<void()>&& completionHandler)
102{
103 completionHandler();
104}
105
106void DeleteWebsiteData::send(std::unique_ptr<IPC::Encoder>&& encoder, IPC::Connection& connection)
107{
108 connection.sendSyncReply(WTFMove(encoder));
109}
110
111void DeleteWebsiteDataForOrigins::callReply(IPC::Decoder& decoder, CompletionHandler<void()>&& completionHandler)
112{
113 completionHandler();
114}
115
116void DeleteWebsiteDataForOrigins::cancelReply(CompletionHandler<void()>&& completionHandler)
117{
118 completionHandler();
119}
120
121void DeleteWebsiteDataForOrigins::send(std::unique_ptr<IPC::Encoder>&& encoder, IPC::Connection& connection)
122{
123 connection.sendSyncReply(WTFMove(encoder));
124}
125
126void GetActivePagesOriginsForTesting::callReply(IPC::Decoder& decoder, CompletionHandler<void(Vector<String>&&)>&& completionHandler)
127{
128 Optional<Vector<String>> activeOrigins;
129 decoder >> activeOrigins;
130 if (!activeOrigins) {
131 ASSERT_NOT_REACHED();
132 return;
133 }
134 completionHandler(WTFMove(*activeOrigins));
135}
136
137void GetActivePagesOriginsForTesting::cancelReply(CompletionHandler<void(Vector<String>&&)>&& completionHandler)
138{
139 completionHandler({ });
140}
141
142void GetActivePagesOriginsForTesting::send(std::unique_ptr<IPC::Encoder>&& encoder, IPC::Connection& connection, const Vector<String>& activeOrigins)
143{
144 *encoder << activeOrigins;
145 connection.sendSyncReply(WTFMove(encoder));
146}
147
148void IsJITEnabled::callReply(IPC::Decoder& decoder, CompletionHandler<void(bool&&)>&& completionHandler)
149{
150 Optional<bool> enabled;
151 decoder >> enabled;
152 if (!enabled) {
153 ASSERT_NOT_REACHED();
154 return;
155 }
156 completionHandler(WTFMove(*enabled));
157}
158
159void IsJITEnabled::cancelReply(CompletionHandler<void(bool&&)>&& completionHandler)
160{
161 completionHandler({ });
162}
163
164void IsJITEnabled::send(std::unique_ptr<IPC::Encoder>&& encoder, IPC::Connection& connection, bool enabled)
165{
166 *encoder << enabled;
167 connection.sendSyncReply(WTFMove(encoder));
168}
169
170} // namespace WebProcess
171
172} // namespace Messages
173
174namespace WebKit {
175
176void WebProcess::didReceiveWebProcessMessage(IPC::Connection& connection, IPC::Decoder& decoder)
177{
178 if (decoder.messageName() == Messages::WebProcess::InitializeWebProcess::name()) {
179 IPC::handleMessage<Messages::WebProcess::InitializeWebProcess>(decoder, this, &WebProcess::initializeWebProcess);
180 return;
181 }
182 if (decoder.messageName() == Messages::WebProcess::SetWebsiteDataStoreParameters::name()) {
183 IPC::handleMessage<Messages::WebProcess::SetWebsiteDataStoreParameters>(decoder, this, &WebProcess::setWebsiteDataStoreParameters);
184 return;
185 }
186 if (decoder.messageName() == Messages::WebProcess::CreateWebPage::name()) {
187 IPC::handleMessage<Messages::WebProcess::CreateWebPage>(decoder, this, &WebProcess::createWebPage);
188 return;
189 }
190 if (decoder.messageName() == Messages::WebProcess::PrewarmGlobally::name()) {
191 IPC::handleMessage<Messages::WebProcess::PrewarmGlobally>(decoder, this, &WebProcess::prewarmGlobally);
192 return;
193 }
194 if (decoder.messageName() == Messages::WebProcess::PrewarmWithDomainInformation::name()) {
195 IPC::handleMessage<Messages::WebProcess::PrewarmWithDomainInformation>(decoder, this, &WebProcess::prewarmWithDomainInformation);
196 return;
197 }
198 if (decoder.messageName() == Messages::WebProcess::SetCacheModel::name()) {
199 IPC::handleMessage<Messages::WebProcess::SetCacheModel>(decoder, this, &WebProcess::setCacheModel);
200 return;
201 }
202 if (decoder.messageName() == Messages::WebProcess::RegisterURLSchemeAsEmptyDocument::name()) {
203 IPC::handleMessage<Messages::WebProcess::RegisterURLSchemeAsEmptyDocument>(decoder, this, &WebProcess::registerURLSchemeAsEmptyDocument);
204 return;
205 }
206 if (decoder.messageName() == Messages::WebProcess::RegisterURLSchemeAsSecure::name()) {
207 IPC::handleMessage<Messages::WebProcess::RegisterURLSchemeAsSecure>(decoder, this, &WebProcess::registerURLSchemeAsSecure);
208 return;
209 }
210 if (decoder.messageName() == Messages::WebProcess::RegisterURLSchemeAsBypassingContentSecurityPolicy::name()) {
211 IPC::handleMessage<Messages::WebProcess::RegisterURLSchemeAsBypassingContentSecurityPolicy>(decoder, this, &WebProcess::registerURLSchemeAsBypassingContentSecurityPolicy);
212 return;
213 }
214 if (decoder.messageName() == Messages::WebProcess::SetDomainRelaxationForbiddenForURLScheme::name()) {
215 IPC::handleMessage<Messages::WebProcess::SetDomainRelaxationForbiddenForURLScheme>(decoder, this, &WebProcess::setDomainRelaxationForbiddenForURLScheme);
216 return;
217 }
218 if (decoder.messageName() == Messages::WebProcess::RegisterURLSchemeAsLocal::name()) {
219 IPC::handleMessage<Messages::WebProcess::RegisterURLSchemeAsLocal>(decoder, this, &WebProcess::registerURLSchemeAsLocal);
220 return;
221 }
222 if (decoder.messageName() == Messages::WebProcess::RegisterURLSchemeAsNoAccess::name()) {
223 IPC::handleMessage<Messages::WebProcess::RegisterURLSchemeAsNoAccess>(decoder, this, &WebProcess::registerURLSchemeAsNoAccess);
224 return;
225 }
226 if (decoder.messageName() == Messages::WebProcess::RegisterURLSchemeAsDisplayIsolated::name()) {
227 IPC::handleMessage<Messages::WebProcess::RegisterURLSchemeAsDisplayIsolated>(decoder, this, &WebProcess::registerURLSchemeAsDisplayIsolated);
228 return;
229 }
230 if (decoder.messageName() == Messages::WebProcess::RegisterURLSchemeAsCORSEnabled::name()) {
231 IPC::handleMessage<Messages::WebProcess::RegisterURLSchemeAsCORSEnabled>(decoder, this, &WebProcess::registerURLSchemeAsCORSEnabled);
232 return;
233 }
234 if (decoder.messageName() == Messages::WebProcess::RegisterURLSchemeAsCachePartitioned::name()) {
235 IPC::handleMessage<Messages::WebProcess::RegisterURLSchemeAsCachePartitioned>(decoder, this, &WebProcess::registerURLSchemeAsCachePartitioned);
236 return;
237 }
238 if (decoder.messageName() == Messages::WebProcess::RegisterURLSchemeAsCanDisplayOnlyIfCanRequest::name()) {
239 IPC::handleMessage<Messages::WebProcess::RegisterURLSchemeAsCanDisplayOnlyIfCanRequest>(decoder, this, &WebProcess::registerURLSchemeAsCanDisplayOnlyIfCanRequest);
240 return;
241 }
242 if (decoder.messageName() == Messages::WebProcess::SetDefaultRequestTimeoutInterval::name()) {
243 IPC::handleMessage<Messages::WebProcess::SetDefaultRequestTimeoutInterval>(decoder, this, &WebProcess::setDefaultRequestTimeoutInterval);
244 return;
245 }
246 if (decoder.messageName() == Messages::WebProcess::SetAlwaysUsesComplexTextCodePath::name()) {
247 IPC::handleMessage<Messages::WebProcess::SetAlwaysUsesComplexTextCodePath>(decoder, this, &WebProcess::setAlwaysUsesComplexTextCodePath);
248 return;
249 }
250 if (decoder.messageName() == Messages::WebProcess::SetShouldUseFontSmoothing::name()) {
251 IPC::handleMessage<Messages::WebProcess::SetShouldUseFontSmoothing>(decoder, this, &WebProcess::setShouldUseFontSmoothing);
252 return;
253 }
254 if (decoder.messageName() == Messages::WebProcess::SetResourceLoadStatisticsEnabled::name()) {
255 IPC::handleMessage<Messages::WebProcess::SetResourceLoadStatisticsEnabled>(decoder, this, &WebProcess::setResourceLoadStatisticsEnabled);
256 return;
257 }
258 if (decoder.messageName() == Messages::WebProcess::ClearResourceLoadStatistics::name()) {
259 IPC::handleMessage<Messages::WebProcess::ClearResourceLoadStatistics>(decoder, this, &WebProcess::clearResourceLoadStatistics);
260 return;
261 }
262 if (decoder.messageName() == Messages::WebProcess::UserPreferredLanguagesChanged::name()) {
263 IPC::handleMessage<Messages::WebProcess::UserPreferredLanguagesChanged>(decoder, this, &WebProcess::userPreferredLanguagesChanged);
264 return;
265 }
266 if (decoder.messageName() == Messages::WebProcess::FullKeyboardAccessModeChanged::name()) {
267 IPC::handleMessage<Messages::WebProcess::FullKeyboardAccessModeChanged>(decoder, this, &WebProcess::fullKeyboardAccessModeChanged);
268 return;
269 }
270 if (decoder.messageName() == Messages::WebProcess::DidAddPlugInAutoStartOriginHash::name()) {
271 IPC::handleMessage<Messages::WebProcess::DidAddPlugInAutoStartOriginHash>(decoder, this, &WebProcess::didAddPlugInAutoStartOriginHash);
272 return;
273 }
274 if (decoder.messageName() == Messages::WebProcess::ResetPlugInAutoStartOriginDefaultHashes::name()) {
275 IPC::handleMessage<Messages::WebProcess::ResetPlugInAutoStartOriginDefaultHashes>(decoder, this, &WebProcess::resetPlugInAutoStartOriginDefaultHashes);
276 return;
277 }
278 if (decoder.messageName() == Messages::WebProcess::ResetPlugInAutoStartOriginHashes::name()) {
279 IPC::handleMessage<Messages::WebProcess::ResetPlugInAutoStartOriginHashes>(decoder, this, &WebProcess::resetPlugInAutoStartOriginHashes);
280 return;
281 }
282 if (decoder.messageName() == Messages::WebProcess::SetPluginLoadClientPolicy::name()) {
283 IPC::handleMessage<Messages::WebProcess::SetPluginLoadClientPolicy>(decoder, this, &WebProcess::setPluginLoadClientPolicy);
284 return;
285 }
286 if (decoder.messageName() == Messages::WebProcess::ResetPluginLoadClientPolicies::name()) {
287 IPC::handleMessage<Messages::WebProcess::ResetPluginLoadClientPolicies>(decoder, this, &WebProcess::resetPluginLoadClientPolicies);
288 return;
289 }
290 if (decoder.messageName() == Messages::WebProcess::ClearPluginClientPolicies::name()) {
291 IPC::handleMessage<Messages::WebProcess::ClearPluginClientPolicies>(decoder, this, &WebProcess::clearPluginClientPolicies);
292 return;
293 }
294 if (decoder.messageName() == Messages::WebProcess::RefreshPlugins::name()) {
295 IPC::handleMessage<Messages::WebProcess::RefreshPlugins>(decoder, this, &WebProcess::refreshPlugins);
296 return;
297 }
298 if (decoder.messageName() == Messages::WebProcess::StartMemorySampler::name()) {
299 IPC::handleMessage<Messages::WebProcess::StartMemorySampler>(decoder, this, &WebProcess::startMemorySampler);
300 return;
301 }
302 if (decoder.messageName() == Messages::WebProcess::StopMemorySampler::name()) {
303 IPC::handleMessage<Messages::WebProcess::StopMemorySampler>(decoder, this, &WebProcess::stopMemorySampler);
304 return;
305 }
306 if (decoder.messageName() == Messages::WebProcess::SetTextCheckerState::name()) {
307 IPC::handleMessage<Messages::WebProcess::SetTextCheckerState>(decoder, this, &WebProcess::setTextCheckerState);
308 return;
309 }
310 if (decoder.messageName() == Messages::WebProcess::SetEnhancedAccessibility::name()) {
311 IPC::handleMessage<Messages::WebProcess::SetEnhancedAccessibility>(decoder, this, &WebProcess::setEnhancedAccessibility);
312 return;
313 }
314 if (decoder.messageName() == Messages::WebProcess::GetWebCoreStatistics::name()) {
315 IPC::handleMessage<Messages::WebProcess::GetWebCoreStatistics>(decoder, this, &WebProcess::getWebCoreStatistics);
316 return;
317 }
318 if (decoder.messageName() == Messages::WebProcess::GarbageCollectJavaScriptObjects::name()) {
319 IPC::handleMessage<Messages::WebProcess::GarbageCollectJavaScriptObjects>(decoder, this, &WebProcess::garbageCollectJavaScriptObjects);
320 return;
321 }
322 if (decoder.messageName() == Messages::WebProcess::SetJavaScriptGarbageCollectorTimerEnabled::name()) {
323 IPC::handleMessage<Messages::WebProcess::SetJavaScriptGarbageCollectorTimerEnabled>(decoder, this, &WebProcess::setJavaScriptGarbageCollectorTimerEnabled);
324 return;
325 }
326 if (decoder.messageName() == Messages::WebProcess::SetInjectedBundleParameter::name()) {
327 IPC::handleMessage<Messages::WebProcess::SetInjectedBundleParameter>(decoder, this, &WebProcess::setInjectedBundleParameter);
328 return;
329 }
330 if (decoder.messageName() == Messages::WebProcess::SetInjectedBundleParameters::name()) {
331 IPC::handleMessage<Messages::WebProcess::SetInjectedBundleParameters>(decoder, this, &WebProcess::setInjectedBundleParameters);
332 return;
333 }
334 if (decoder.messageName() == Messages::WebProcess::HandleInjectedBundleMessage::name()) {
335 IPC::handleMessage<Messages::WebProcess::HandleInjectedBundleMessage>(decoder, this, &WebProcess::handleInjectedBundleMessage);
336 return;
337 }
338 if (decoder.messageName() == Messages::WebProcess::ReleasePageCache::name()) {
339 IPC::handleMessage<Messages::WebProcess::ReleasePageCache>(decoder, this, &WebProcess::releasePageCache);
340 return;
341 }
342 if (decoder.messageName() == Messages::WebProcess::FetchWebsiteData::name()) {
343 IPC::handleMessageAsync<Messages::WebProcess::FetchWebsiteData>(connection, decoder, this, &WebProcess::fetchWebsiteData);
344 return;
345 }
346 if (decoder.messageName() == Messages::WebProcess::DeleteWebsiteData::name()) {
347 IPC::handleMessageAsync<Messages::WebProcess::DeleteWebsiteData>(connection, decoder, this, &WebProcess::deleteWebsiteData);
348 return;
349 }
350 if (decoder.messageName() == Messages::WebProcess::DeleteWebsiteDataForOrigins::name()) {
351 IPC::handleMessageAsync<Messages::WebProcess::DeleteWebsiteDataForOrigins>(connection, decoder, this, &WebProcess::deleteWebsiteDataForOrigins);
352 return;
353 }
354 if (decoder.messageName() == Messages::WebProcess::SetHiddenPageDOMTimerThrottlingIncreaseLimit::name()) {
355 IPC::handleMessage<Messages::WebProcess::SetHiddenPageDOMTimerThrottlingIncreaseLimit>(decoder, this, &WebProcess::setHiddenPageDOMTimerThrottlingIncreaseLimit);
356 return;
357 }
358#if PLATFORM(COCOA)
359 if (decoder.messageName() == Messages::WebProcess::SetQOS::name()) {
360 IPC::handleMessage<Messages::WebProcess::SetQOS>(decoder, this, &WebProcess::setQOS);
361 return;
362 }
363#endif
364 if (decoder.messageName() == Messages::WebProcess::SetMemoryCacheDisabled::name()) {
365 IPC::handleMessage<Messages::WebProcess::SetMemoryCacheDisabled>(decoder, this, &WebProcess::setMemoryCacheDisabled);
366 return;
367 }
368#if ENABLE(SERVICE_CONTROLS)
369 if (decoder.messageName() == Messages::WebProcess::SetEnabledServices::name()) {
370 IPC::handleMessage<Messages::WebProcess::SetEnabledServices>(decoder, this, &WebProcess::setEnabledServices);
371 return;
372 }
373#endif
374 if (decoder.messageName() == Messages::WebProcess::EnsureAutomationSessionProxy::name()) {
375 IPC::handleMessage<Messages::WebProcess::EnsureAutomationSessionProxy>(decoder, this, &WebProcess::ensureAutomationSessionProxy);
376 return;
377 }
378 if (decoder.messageName() == Messages::WebProcess::DestroyAutomationSessionProxy::name()) {
379 IPC::handleMessage<Messages::WebProcess::DestroyAutomationSessionProxy>(decoder, this, &WebProcess::destroyAutomationSessionProxy);
380 return;
381 }
382 if (decoder.messageName() == Messages::WebProcess::ProcessWillSuspendImminently::name()) {
383 IPC::handleMessage<Messages::WebProcess::ProcessWillSuspendImminently>(decoder, this, &WebProcess::processWillSuspendImminently);
384 return;
385 }
386 if (decoder.messageName() == Messages::WebProcess::PrepareToSuspend::name()) {
387 IPC::handleMessage<Messages::WebProcess::PrepareToSuspend>(decoder, this, &WebProcess::prepareToSuspend);
388 return;
389 }
390 if (decoder.messageName() == Messages::WebProcess::CancelPrepareToSuspend::name()) {
391 IPC::handleMessage<Messages::WebProcess::CancelPrepareToSuspend>(decoder, this, &WebProcess::cancelPrepareToSuspend);
392 return;
393 }
394 if (decoder.messageName() == Messages::WebProcess::ProcessDidResume::name()) {
395 IPC::handleMessage<Messages::WebProcess::ProcessDidResume>(decoder, this, &WebProcess::processDidResume);
396 return;
397 }
398 if (decoder.messageName() == Messages::WebProcess::MainThreadPing::name()) {
399 IPC::handleMessage<Messages::WebProcess::MainThreadPing>(decoder, this, &WebProcess::mainThreadPing);
400 return;
401 }
402 if (decoder.messageName() == Messages::WebProcess::BackgroundResponsivenessPing::name()) {
403 IPC::handleMessage<Messages::WebProcess::BackgroundResponsivenessPing>(decoder, this, &WebProcess::backgroundResponsivenessPing);
404 return;
405 }
406#if ENABLE(GAMEPAD)
407 if (decoder.messageName() == Messages::WebProcess::SetInitialGamepads::name()) {
408 IPC::handleMessage<Messages::WebProcess::SetInitialGamepads>(decoder, this, &WebProcess::setInitialGamepads);
409 return;
410 }
411#endif
412#if ENABLE(GAMEPAD)
413 if (decoder.messageName() == Messages::WebProcess::GamepadConnected::name()) {
414 IPC::handleMessage<Messages::WebProcess::GamepadConnected>(decoder, this, &WebProcess::gamepadConnected);
415 return;
416 }
417#endif
418#if ENABLE(GAMEPAD)
419 if (decoder.messageName() == Messages::WebProcess::GamepadDisconnected::name()) {
420 IPC::handleMessage<Messages::WebProcess::GamepadDisconnected>(decoder, this, &WebProcess::gamepadDisconnected);
421 return;
422 }
423#endif
424#if ENABLE(SERVICE_WORKER)
425 if (decoder.messageName() == Messages::WebProcess::EstablishWorkerContextConnectionToNetworkProcess::name()) {
426 IPC::handleMessage<Messages::WebProcess::EstablishWorkerContextConnectionToNetworkProcess>(decoder, this, &WebProcess::establishWorkerContextConnectionToNetworkProcess);
427 return;
428 }
429#endif
430#if ENABLE(SERVICE_WORKER)
431 if (decoder.messageName() == Messages::WebProcess::RegisterServiceWorkerClients::name()) {
432 IPC::handleMessage<Messages::WebProcess::RegisterServiceWorkerClients>(decoder, this, &WebProcess::registerServiceWorkerClients);
433 return;
434 }
435#endif
436 if (decoder.messageName() == Messages::WebProcess::DidTakeAllMessagesForPort::name()) {
437 IPC::handleMessage<Messages::WebProcess::DidTakeAllMessagesForPort>(decoder, this, &WebProcess::didTakeAllMessagesForPort);
438 return;
439 }
440 if (decoder.messageName() == Messages::WebProcess::DidCheckRemotePortForActivity::name()) {
441 IPC::handleMessage<Messages::WebProcess::DidCheckRemotePortForActivity>(decoder, this, &WebProcess::didCheckRemotePortForActivity);
442 return;
443 }
444 if (decoder.messageName() == Messages::WebProcess::CheckProcessLocalPortForActivity::name()) {
445 IPC::handleMessage<Messages::WebProcess::CheckProcessLocalPortForActivity>(decoder, this, &WebProcess::checkProcessLocalPortForActivity);
446 return;
447 }
448 if (decoder.messageName() == Messages::WebProcess::MessagesAvailableForPort::name()) {
449 IPC::handleMessage<Messages::WebProcess::MessagesAvailableForPort>(decoder, this, &WebProcess::messagesAvailableForPort);
450 return;
451 }
452 if (decoder.messageName() == Messages::WebProcess::SetHasSuspendedPageProxy::name()) {
453 IPC::handleMessage<Messages::WebProcess::SetHasSuspendedPageProxy>(decoder, this, &WebProcess::setHasSuspendedPageProxy);
454 return;
455 }
456 if (decoder.messageName() == Messages::WebProcess::SetIsInProcessCache::name()) {
457 IPC::handleMessage<Messages::WebProcess::SetIsInProcessCache>(decoder, this, &WebProcess::setIsInProcessCache);
458 return;
459 }
460 if (decoder.messageName() == Messages::WebProcess::MarkIsNoLongerPrewarmed::name()) {
461 IPC::handleMessage<Messages::WebProcess::MarkIsNoLongerPrewarmed>(decoder, this, &WebProcess::markIsNoLongerPrewarmed);
462 return;
463 }
464 if (decoder.messageName() == Messages::WebProcess::UpdateActivePages::name()) {
465 IPC::handleMessage<Messages::WebProcess::UpdateActivePages>(decoder, this, &WebProcess::updateActivePages);
466 return;
467 }
468 if (decoder.messageName() == Messages::WebProcess::GetActivePagesOriginsForTesting::name()) {
469 IPC::handleMessageAsync<Messages::WebProcess::GetActivePagesOriginsForTesting>(connection, decoder, this, &WebProcess::getActivePagesOriginsForTesting);
470 return;
471 }
472#if PLATFORM(MAC)
473 if (decoder.messageName() == Messages::WebProcess::SetScreenProperties::name()) {
474 IPC::handleMessage<Messages::WebProcess::SetScreenProperties>(decoder, this, &WebProcess::setScreenProperties);
475 return;
476 }
477#endif
478#if (PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING))
479 if (decoder.messageName() == Messages::WebProcess::ScrollerStylePreferenceChanged::name()) {
480 IPC::handleMessage<Messages::WebProcess::ScrollerStylePreferenceChanged>(decoder, this, &WebProcess::scrollerStylePreferenceChanged);
481 return;
482 }
483#endif
484#if (PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING))
485 if (decoder.messageName() == Messages::WebProcess::DisplayConfigurationChanged::name()) {
486 IPC::handleMessage<Messages::WebProcess::DisplayConfigurationChanged>(decoder, this, &WebProcess::displayConfigurationChanged);
487 return;
488 }
489#endif
490#if (PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING))
491 if (decoder.messageName() == Messages::WebProcess::DisplayWasRefreshed::name()) {
492 IPC::handleMessage<Messages::WebProcess::DisplayWasRefreshed>(decoder, this, &WebProcess::displayWasRefreshed);
493 return;
494 }
495#endif
496#if PLATFORM(IOS)
497 if (decoder.messageName() == Messages::WebProcess::BacklightLevelDidChange::name()) {
498 IPC::handleMessage<Messages::WebProcess::BacklightLevelDidChange>(decoder, this, &WebProcess::backlightLevelDidChange);
499 return;
500 }
501#endif
502 if (decoder.messageName() == Messages::WebProcess::IsJITEnabled::name()) {
503 IPC::handleMessageAsync<Messages::WebProcess::IsJITEnabled>(connection, decoder, this, &WebProcess::isJITEnabled);
504 return;
505 }
506#if PLATFORM(COCOA)
507 if (decoder.messageName() == Messages::WebProcess::SetMediaMIMETypes::name()) {
508 IPC::handleMessage<Messages::WebProcess::SetMediaMIMETypes>(decoder, this, &WebProcess::setMediaMIMETypes);
509 return;
510 }
511#endif
512#if ENABLE(MEDIA_STREAM)
513 if (decoder.messageName() == Messages::WebProcess::AddMockMediaDevice::name()) {
514 IPC::handleMessage<Messages::WebProcess::AddMockMediaDevice>(decoder, this, &WebProcess::addMockMediaDevice);
515 return;
516 }
517#endif
518#if ENABLE(MEDIA_STREAM)
519 if (decoder.messageName() == Messages::WebProcess::ClearMockMediaDevices::name()) {
520 IPC::handleMessage<Messages::WebProcess::ClearMockMediaDevices>(decoder, this, &WebProcess::clearMockMediaDevices);
521 return;
522 }
523#endif
524#if ENABLE(MEDIA_STREAM)
525 if (decoder.messageName() == Messages::WebProcess::RemoveMockMediaDevice::name()) {
526 IPC::handleMessage<Messages::WebProcess::RemoveMockMediaDevice>(decoder, this, &WebProcess::removeMockMediaDevice);
527 return;
528 }
529#endif
530#if ENABLE(MEDIA_STREAM)
531 if (decoder.messageName() == Messages::WebProcess::ResetMockMediaDevices::name()) {
532 IPC::handleMessage<Messages::WebProcess::ResetMockMediaDevices>(decoder, this, &WebProcess::resetMockMediaDevices);
533 return;
534 }
535#endif
536#if (ENABLE(MEDIA_STREAM) && ENABLE(SANDBOX_EXTENSIONS))
537 if (decoder.messageName() == Messages::WebProcess::GrantUserMediaDeviceSandboxExtensions::name()) {
538 IPC::handleMessage<Messages::WebProcess::GrantUserMediaDeviceSandboxExtensions>(decoder, this, &WebProcess::grantUserMediaDeviceSandboxExtensions);
539 return;
540 }
541#endif
542#if (ENABLE(MEDIA_STREAM) && ENABLE(SANDBOX_EXTENSIONS))
543 if (decoder.messageName() == Messages::WebProcess::RevokeUserMediaDeviceSandboxExtensions::name()) {
544 IPC::handleMessage<Messages::WebProcess::RevokeUserMediaDeviceSandboxExtensions>(decoder, this, &WebProcess::revokeUserMediaDeviceSandboxExtensions);
545 return;
546 }
547#endif
548 if (decoder.messageName() == Messages::WebProcess::ClearCurrentModifierStateForTesting::name()) {
549 IPC::handleMessage<Messages::WebProcess::ClearCurrentModifierStateForTesting>(decoder, this, &WebProcess::clearCurrentModifierStateForTesting);
550 return;
551 }
552#if PLATFORM(IOS_FAMILY)
553 if (decoder.messageName() == Messages::WebProcess::UnblockAccessibilityServer::name()) {
554 IPC::handleMessage<Messages::WebProcess::UnblockAccessibilityServer>(decoder, this, &WebProcess::unblockAccessibilityServer);
555 return;
556 }
557#endif
558 UNUSED_PARAM(connection);
559 UNUSED_PARAM(decoder);
560 ASSERT_NOT_REACHED();
561}
562
563} // namespace WebKit
564
565