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

Side by Side Diff: third_party/WebKit/Source/web/FrameLoaderClientImpl.cpp

Issue 1781783002: Implement support for link type serviceworker in link elements. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix year and fix test flakyness Created 4 years, 9 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
1 /* 1 /*
2 * Copyright (C) 2009, 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2009, 2012 Google Inc. All rights reserved.
3 * Copyright (C) 2011 Apple Inc. All rights reserved. 3 * Copyright (C) 2011 Apple Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 #include "core/frame/Settings.h" 42 #include "core/frame/Settings.h"
43 #include "core/html/HTMLFrameElementBase.h" 43 #include "core/html/HTMLFrameElementBase.h"
44 #include "core/html/HTMLMediaElement.h" 44 #include "core/html/HTMLMediaElement.h"
45 #include "core/html/HTMLPlugInElement.h" 45 #include "core/html/HTMLPlugInElement.h"
46 #include "core/input/EventHandler.h" 46 #include "core/input/EventHandler.h"
47 #include "core/layout/HitTestResult.h" 47 #include "core/layout/HitTestResult.h"
48 #include "core/loader/DocumentLoader.h" 48 #include "core/loader/DocumentLoader.h"
49 #include "core/loader/FrameLoadRequest.h" 49 #include "core/loader/FrameLoadRequest.h"
50 #include "core/loader/FrameLoader.h" 50 #include "core/loader/FrameLoader.h"
51 #include "core/loader/HistoryItem.h" 51 #include "core/loader/HistoryItem.h"
52 #include "core/loader/LinkLoaderClient.h"
52 #include "core/page/Page.h" 53 #include "core/page/Page.h"
53 #include "core/page/WindowFeatures.h" 54 #include "core/page/WindowFeatures.h"
54 #include "modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.h" 55 #include "modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.h"
55 #include "modules/device_light/DeviceLightController.h" 56 #include "modules/device_light/DeviceLightController.h"
56 #include "modules/device_orientation/DeviceMotionController.h" 57 #include "modules/device_orientation/DeviceMotionController.h"
57 #include "modules/device_orientation/DeviceOrientationAbsoluteController.h" 58 #include "modules/device_orientation/DeviceOrientationAbsoluteController.h"
58 #include "modules/device_orientation/DeviceOrientationController.h" 59 #include "modules/device_orientation/DeviceOrientationController.h"
59 #include "modules/encryptedmedia/HTMLMediaElementEncryptedMedia.h" 60 #include "modules/encryptedmedia/HTMLMediaElementEncryptedMedia.h"
60 #include "modules/gamepad/NavigatorGamepad.h" 61 #include "modules/gamepad/NavigatorGamepad.h"
61 #include "modules/mediasession/HTMLMediaElementMediaSession.h" 62 #include "modules/mediasession/HTMLMediaElementMediaSession.h"
62 #include "modules/mediasession/MediaSession.h" 63 #include "modules/mediasession/MediaSession.h"
63 #include "modules/serviceworkers/NavigatorServiceWorker.h" 64 #include "modules/serviceworkers/NavigatorServiceWorker.h"
65 #include "modules/serviceworkers/ServiceWorkerContainer.h"
64 #include "modules/storage/DOMWindowStorageController.h" 66 #include "modules/storage/DOMWindowStorageController.h"
65 #include "modules/vr/NavigatorVRDevice.h" 67 #include "modules/vr/NavigatorVRDevice.h"
66 #include "platform/Histogram.h" 68 #include "platform/Histogram.h"
67 #include "platform/MIMETypeRegistry.h" 69 #include "platform/MIMETypeRegistry.h"
68 #include "platform/RuntimeEnabledFeatures.h" 70 #include "platform/RuntimeEnabledFeatures.h"
69 #include "platform/UserGestureIndicator.h" 71 #include "platform/UserGestureIndicator.h"
70 #include "platform/exported/WrappedResourceRequest.h" 72 #include "platform/exported/WrappedResourceRequest.h"
71 #include "platform/exported/WrappedResourceResponse.h" 73 #include "platform/exported/WrappedResourceResponse.h"
72 #include "platform/fonts/GlyphPageTreeNode.h" 74 #include "platform/fonts/GlyphPageTreeNode.h"
73 #include "platform/network/HTTPParsers.h" 75 #include "platform/network/HTTPParsers.h"
74 #include "platform/plugins/PluginData.h" 76 #include "platform/plugins/PluginData.h"
75 #include "public/platform/Platform.h" 77 #include "public/platform/Platform.h"
76 #include "public/platform/WebApplicationCacheHost.h" 78 #include "public/platform/WebApplicationCacheHost.h"
77 #include "public/platform/WebMediaPlayer.h" 79 #include "public/platform/WebMediaPlayer.h"
78 #include "public/platform/WebMimeRegistry.h" 80 #include "public/platform/WebMimeRegistry.h"
79 #include "public/platform/WebRTCPeerConnectionHandler.h" 81 #include "public/platform/WebRTCPeerConnectionHandler.h"
82 #include "public/platform/WebScheduler.h"
80 #include "public/platform/WebSecurityOrigin.h" 83 #include "public/platform/WebSecurityOrigin.h"
81 #include "public/platform/WebURL.h" 84 #include "public/platform/WebURL.h"
82 #include "public/platform/WebURLError.h" 85 #include "public/platform/WebURLError.h"
83 #include "public/platform/WebVector.h" 86 #include "public/platform/WebVector.h"
84 #include "public/platform/modules/mediasession/WebMediaSession.h" 87 #include "public/platform/modules/mediasession/WebMediaSession.h"
85 #include "public/platform/modules/serviceworker/WebServiceWorkerProvider.h" 88 #include "public/platform/modules/serviceworker/WebServiceWorkerProvider.h"
86 #include "public/platform/modules/serviceworker/WebServiceWorkerProviderClient.h " 89 #include "public/platform/modules/serviceworker/WebServiceWorkerProviderClient.h "
87 #include "public/web/WebAutofillClient.h" 90 #include "public/web/WebAutofillClient.h"
88 #include "public/web/WebContentSettingsClient.h" 91 #include "public/web/WebContentSettingsClient.h"
89 #include "public/web/WebDOMEvent.h" 92 #include "public/web/WebDOMEvent.h"
(...skipping 940 matching lines...) Expand 10 before | Expand all | Expand 10 after
1030 } 1033 }
1031 1034
1032 void FrameLoaderClientImpl::suddenTerminationDisablerChanged(bool present, Sudde nTerminationDisablerType type) 1035 void FrameLoaderClientImpl::suddenTerminationDisablerChanged(bool present, Sudde nTerminationDisablerType type)
1033 { 1036 {
1034 if (m_webFrame->client()) { 1037 if (m_webFrame->client()) {
1035 m_webFrame->client()->suddenTerminationDisablerChanged( 1038 m_webFrame->client()->suddenTerminationDisablerChanged(
1036 present, static_cast<WebFrameClient::SuddenTerminationDisablerType>( type)); 1039 present, static_cast<WebFrameClient::SuddenTerminationDisablerType>( type));
1037 } 1040 }
1038 } 1041 }
1039 1042
1043 namespace {
1044
1045 class RegistrationCallback : public WebServiceWorkerProvider::WebServiceWorkerRe gistrationCallbacks {
1046 public:
1047 explicit RegistrationCallback(LinkLoaderClient* client) : m_client(client) { }
1048 ~RegistrationCallback() override {}
1049
1050 void onSuccess(WebPassOwnPtr<WebServiceWorkerRegistration::Handle> handle) o verride
1051 {
1052 Platform::current()->currentThread()->scheduler()->timerTaskRunner()->po stTask(BLINK_FROM_HERE, bind(&LinkLoaderClient::linkLoaded, m_client));
1053 }
1054
1055 void onError(const WebServiceWorkerError& error) override
1056 {
1057 Platform::current()->currentThread()->scheduler()->timerTaskRunner()->po stTask(BLINK_FROM_HERE, bind(&LinkLoaderClient::linkLoadingErrored, m_client));
1058 }
1059
1060 private:
1061 WTF_MAKE_NONCOPYABLE(RegistrationCallback);
1062
1063 RawPtrWillBePersistent<LinkLoaderClient> m_client;
1064 };
1065
1066 }
1067
1068 void FrameLoaderClientImpl::registerServiceWorker(const KURL& scriptURL, const S tring& scope, LinkLoaderClient* client)
1069 {
1070 if (!client->shouldLoadLink())
1071 return;
1072
1073 Document* document = m_webFrame->frame()->document();
1074 KURL scopeURL;
1075 if (scope.isNull())
1076 scopeURL = KURL(scriptURL, "./");
1077 else
1078 scopeURL = document->completeURL(scope);
1079 scopeURL.removeFragmentIdentifier();
Nate Chapin 2016/03/17 22:49:03 Can we do this and the things about it in LinkServ
Marijn Kruisselbrink 2016/03/17 23:20:39 Done
1080
1081 TrackExceptionState exceptionState;
1082 NavigatorServiceWorker::serviceWorker(document, *m_webFrame->frame()->domWin dow()->navigator(), exceptionState)->registerServiceWorkerImpl(document, scriptU RL, scopeURL, adoptPtr(new RegistrationCallback(client)));
1083 }
1084
1040 } // namespace blink 1085 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698