RESOLVED FIXED Bug 167306
[WebRTC] Add support for WK2 libwebrtc endpoint
https://bugs.webkit.org/show_bug.cgi?id=167306
Summary [WebRTC] Add support for WK2 libwebrtc endpoint
youenn fablet
Reported 2017-01-23 07:35:40 PST
Add support for WK2 libwebrtc endpoint
Attachments
Patch (155.07 KB, patch)
2017-01-23 08:03 PST, youenn fablet
no flags
Patch (137.43 KB, patch)
2017-01-24 09:17 PST, youenn fablet
no flags
Patch (137.51 KB, patch)
2017-01-24 10:14 PST, youenn fablet
no flags
Patch (138.02 KB, patch)
2017-01-24 13:40 PST, youenn fablet
no flags
Patch (148.80 KB, patch)
2017-01-26 18:16 PST, youenn fablet
no flags
Patch (136.29 KB, patch)
2017-01-27 16:38 PST, youenn fablet
no flags
Patch (164.80 KB, patch)
2017-01-29 14:31 PST, youenn fablet
no flags
Patch (164.58 KB, patch)
2017-01-30 18:27 PST, youenn fablet
no flags
Patch (164.53 KB, patch)
2017-01-30 20:07 PST, youenn fablet
no flags
Archive of layout-test-results from ews122 for ios-simulator-wk2 (890.12 KB, application/zip)
2017-01-31 02:05 PST, Build Bot
no flags
Patch for landing (164.35 KB, patch)
2017-01-31 11:00 PST, youenn fablet
no flags
youenn fablet
Comment 1 2017-01-23 08:03:35 PST
youenn fablet
Comment 2 2017-01-24 09:17:52 PST
WebKit Commit Bot
Comment 3 2017-01-24 09:19:59 PST
Attachment 299606 [details] did not pass style-queue: ERROR: Source/WebKit2/WebProcess/Network/webrtc/WebPacketSocket.h:48: enum members should use InterCaps with an initial capital letter or initial 'k' for C-style enums. [readability/enum_casing] [4] ERROR: Source/WebKit2/NetworkProcess/webrtc/NetworkNetworkManager.h:46: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/WebKit2/WebProcess/Network/webrtc/WebPacketSocketFactory.h:63: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/WebKit2/Shared/RTCNetwork.cpp:38: Code inside a namespace should not be indented. [whitespace/indent] [4] ERROR: Source/WebKit2/Shared/RTCNetwork.h:50: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] Total errors found: 5 in 34 files If any of these errors are false positives, please file a bug against check-webkit-style.
youenn fablet
Comment 4 2017-01-24 10:14:23 PST
WebKit Commit Bot
Comment 5 2017-01-24 10:16:34 PST
Attachment 299608 [details] did not pass style-queue: ERROR: Source/WebKit2/WebProcess/Network/webrtc/WebPacketSocket.h:48: enum members should use InterCaps with an initial capital letter or initial 'k' for C-style enums. [readability/enum_casing] [4] ERROR: Source/WebKit2/CMakeLists.txt:595: There should be exactly one empty line instead of 0 between "NetworkProcess/NetworkResourceLoader.messages.in" and "NetworkProcess/webrtc/NetworkPacketSocket.messages.in". [list/emptyline] [5] ERROR: Source/WebKit2/NetworkProcess/webrtc/NetworkNetworkManager.h:46: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/WebKit2/WebProcess/Network/webrtc/WebPacketSocketFactory.h:63: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/WebKit2/Shared/RTCNetwork.cpp:38: Code inside a namespace should not be indented. [whitespace/indent] [4] ERROR: Source/WebKit2/Shared/RTCNetwork.h:52: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] Total errors found: 6 in 34 files If any of these errors are false positives, please file a bug against check-webkit-style.
youenn fablet
Comment 6 2017-01-24 13:40:05 PST
WebKit Commit Bot
Comment 7 2017-01-24 13:43:09 PST
Attachment 299623 [details] did not pass style-queue: ERROR: Source/WebKit2/WebProcess/Network/webrtc/WebPacketSocket.h:48: enum members should use InterCaps with an initial capital letter or initial 'k' for C-style enums. [readability/enum_casing] [4] ERROR: Source/WebKit2/CMakeLists.txt:595: There should be exactly one empty line instead of 0 between "NetworkProcess/NetworkResourceLoader.messages.in" and "NetworkProcess/webrtc/NetworkPacketSocket.messages.in". [list/emptyline] [5] ERROR: Source/WebKit2/NetworkProcess/webrtc/NetworkNetworkManager.h:46: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/WebKit2/WebProcess/Network/webrtc/WebPacketSocketFactory.h:63: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/WebKit2/Shared/RTCNetwork.cpp:40: Code inside a namespace should not be indented. [whitespace/indent] [4] ERROR: Source/WebKit2/Shared/RTCNetwork.h:52: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] Total errors found: 6 in 34 files If any of these errors are false positives, please file a bug against check-webkit-style.
youenn fablet
Comment 8 2017-01-26 18:16:32 PST
WebKit Commit Bot
Comment 9 2017-01-26 18:19:50 PST
Attachment 299893 [details] did not pass style-queue: ERROR: Source/WebKit2/WebProcess/Network/webrtc/WebPacketSocket.h:49: enum members should use InterCaps with an initial capital letter or initial 'k' for C-style enums. [readability/enum_casing] [4] ERROR: Source/WebKit2/NetworkProcess/webrtc/NetworkNetworkManager.h:46: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/WebKit2/WebProcess/Network/webrtc/WebPacketSocketFactory.h:63: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/WebKit2/Shared/RTCNetwork.cpp:40: Code inside a namespace should not be indented. [whitespace/indent] [4] ERROR: Source/WebKit2/Shared/RTCNetwork.h:52: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] Total errors found: 5 in 34 files If any of these errors are false positives, please file a bug against check-webkit-style.
Alex Christensen
Comment 10 2017-01-27 11:42:14 PST
Comment on attachment 299893 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=299893&action=review > Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h:154 > + NetworkNetworkManager m_networkManager; Neither of these are good names. > Source/WebKit2/NetworkProcess/webrtc/NetworkPacketSocket.cpp:100 > +void NetworkPacketSocket::OnMessage(rtc::Message* message) > +{ > + ASSERT(message->message_id == 1); > + delete this; > +} This seems strange. > Source/WebKit2/WebKit2.xcodeproj/project.pbxproj:10318 > + HEADER_SEARCH_PATHS = ( > + "$(BUILT_PRODUCTS_DIR)/usr/local/include", > + "\"$(WEBCORE_PRIVATE_HEADERS_DIR)/ForwardingHeaders\"", > + "\"$(WEBCORE_PRIVATE_HEADERS_DIR)/icu\"", We shouldn't need to add any more WEBCORE include directories to WebKit2.
youenn fablet
Comment 11 2017-01-27 16:38:51 PST
WebKit Commit Bot
Comment 12 2017-01-27 16:40:33 PST
Attachment 299978 [details] did not pass style-queue: ERROR: Source/WebKit2/WebProcess/Network/webrtc/LibWebRTCResolver.h:46: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/WebKit2/WebProcess/Network/webrtc/WebPacketSocketFactory.h:63: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/WebKit2/Shared/RTCNetwork.cpp:39: Code inside a namespace should not be indented. [whitespace/indent] [4] ERROR: Source/WebKit2/WebProcess/Network/webrtc/LibWebRTCPacketSocket.h:53: enum members should use InterCaps with an initial capital letter or initial 'k' for C-style enums. [readability/enum_casing] [4] ERROR: Source/WebKit2/Shared/RTCNetwork.h:51: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] Total errors found: 5 in 36 files If any of these errors are false positives, please file a bug against check-webkit-style.
Radar WebKit Bug Importer
Comment 13 2017-01-27 17:41:32 PST
youenn fablet
Comment 14 2017-01-29 14:31:29 PST
WebKit Commit Bot
Comment 15 2017-01-29 14:33:38 PST
Attachment 300074 [details] did not pass style-queue: ERROR: Source/WebKit2/WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp:34: Alphabetical sorting problem. [build/include_order] [4] ERROR: Source/WebKit2/WebProcess/Network/webrtc/LibWebRTCResolver.h:40: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/WebKit2/NetworkProcess/webrtc/NetworkRTCMonitor.h:46: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/WebKit2/WebProcess/Network/webrtc/WebRTCResolver.h:34: Code inside a namespace should not be indented. [whitespace/indent] [4] ERROR: Source/WebKit2/Shared/RTCNetwork.cpp:40: Code inside a namespace should not be indented. [whitespace/indent] [4] ERROR: Source/WebKit2/WebProcess/Network/webrtc/LibWebRTCSocket.h:52: enum members should use InterCaps with an initial capital letter or initial 'k' for C-style enums. [readability/enum_casing] [4] ERROR: Source/WebKit2/Shared/RTCNetwork.h:52: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] Total errors found: 7 in 41 files If any of these errors are false positives, please file a bug against check-webkit-style.
Alex Christensen
Comment 16 2017-01-30 16:09:38 PST
Comment on attachment 300074 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=300074&action=review partial review. I'm not sure this is organized completely correctly. > Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp:76 > + m_rtcProvider->close(); Can this happen with a destructor instead of having to call close every time we might lose it? > Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h:120 > + RefPtr<NetworkRTCProvider> m_rtcProvider; Does this need to be ref counted? It seems to only have one or zero references. > Source/WebKit2/NetworkProcess/webrtc/NetworkRTCMonitor.messages.in:25 > +messages -> NetworkRTCMonitor LegacyReceiver { Could we not add LegacyReceiver to new IPC message types? > Source/WebKit2/WebProcess/Network/webrtc/LibWebRTCSocket.cpp:56 > + std::fill_n(m_options, MAX_SOCKET_OPTION, -1); could we use memset and sizeof? That would feel safer, although it's the same in this case. > Source/WebKit2/WebProcess/Network/webrtc/WebRTCResolver.h:35 > + class Decoder; no indent > Source/WebKit2/WebProcess/WebPage/WebPage.cpp:384 > +#if USE(LIBWEBRTC) > + makeUniqueRef<WebKit::LibWebRTCProvider>() > +#else > makeUniqueRef<WebCore::LibWebRTCProvider>() > +#endif Could we do something similar and have WebKit::LibWebRTCProvider exist and do nothing if USE(LIBWEBRTC) is false? > Source/WebKit2/WebProcess/WebProcess.h:171 > + LibWebRTC& libWebRTC() { return *m_libWebRTC; } > + void initializeLibWebRTC(); The name LibWebRTC doesn't indicate what this class does. Also, we requiring the caller to call initializeLibWebRTC before calling libWebRTC is strange. Could we just check if it's null and if it is then create one? Then we'd only need one function.
youenn fablet
Comment 17 2017-01-30 18:18:26 PST
Thanks for the initial review. > View in context: > https://bugs.webkit.org/attachment.cgi?id=300074&action=review > > partial review. I'm not sure this is organized completely correctly. > > > Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp:76 > > + m_rtcProvider->close(); > > Can this happen with a destructor instead of having to call close every time > we might lose it? m_rtcProvider may remain live while NetworkConnectionToWebProcess is gone. close ensures m_rtcProvider will not use its deleted NetworkConnectionToWebProcess. > > Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h:120 > > + RefPtr<NetworkRTCProvider> m_rtcProvider; > > Does this need to be ref counted? It seems to only have one or zero > references. It is refcounted each time we go to/from the rtc thread/main thread. In the future, we should find a path to go directly from web process rtc thread to network process rtc thread > > > Source/WebKit2/NetworkProcess/webrtc/NetworkRTCMonitor.messages.in:25 > > +messages -> NetworkRTCMonitor LegacyReceiver { > > Could we not add LegacyReceiver to new IPC message types? Will try. > > Source/WebKit2/WebProcess/Network/webrtc/LibWebRTCSocket.cpp:56 > > + std::fill_n(m_options, MAX_SOCKET_OPTION, -1); > > could we use memset and sizeof? That would feel safer, although it's the > same in this case. OK > > Source/WebKit2/WebProcess/Network/webrtc/WebRTCResolver.h:35 > > + class Decoder; > > no indent OK > > Source/WebKit2/WebProcess/WebPage/WebPage.cpp:384 > > +#if USE(LIBWEBRTC) > > + makeUniqueRef<WebKit::LibWebRTCProvider>() > > +#else > > makeUniqueRef<WebCore::LibWebRTCProvider>() > > +#endif > > Could we do something similar and have WebKit::LibWebRTCProvider exist and > do nothing if USE(LIBWEBRTC) is false? OK > > Source/WebKit2/WebProcess/WebProcess.h:171 > > + LibWebRTC& libWebRTC() { return *m_libWebRTC; } > > + void initializeLibWebRTC(); > > The name LibWebRTC doesn't indicate what this class does. Let's change it to LibWebRTCNetwork > Also, we requiring the caller to call initializeLibWebRTC before calling > libWebRTC is strange. Could we just check if it's null and if it is then > create one? Then we'd only need one function. Sure, that is really a left over.
youenn fablet
Comment 18 2017-01-30 18:27:39 PST
WebKit Commit Bot
Comment 19 2017-01-30 18:30:27 PST
Attachment 300177 [details] did not pass style-queue: ERROR: Source/WebKit2/WebProcess/Network/webrtc/LibWebRTCResolver.h:40: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/WebKit2/NetworkProcess/webrtc/NetworkRTCMonitor.h:46: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/WebKit2/Shared/RTCNetwork.cpp:40: Code inside a namespace should not be indented. [whitespace/indent] [4] ERROR: Source/WebKit2/WebProcess/Network/webrtc/LibWebRTCSocket.h:52: enum members should use InterCaps with an initial capital letter or initial 'k' for C-style enums. [readability/enum_casing] [4] ERROR: Source/WebKit2/Shared/RTCNetwork.h:52: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] Total errors found: 5 in 41 files If any of these errors are false positives, please file a bug against check-webkit-style.
youenn fablet
Comment 20 2017-01-30 20:07:36 PST
WebKit Commit Bot
Comment 21 2017-01-30 20:10:05 PST
Attachment 300182 [details] did not pass style-queue: ERROR: Source/WebKit2/WebProcess/Network/webrtc/LibWebRTCResolver.h:40: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/WebKit2/NetworkProcess/webrtc/NetworkRTCMonitor.h:46: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/WebKit2/Shared/RTCNetwork.cpp:40: Code inside a namespace should not be indented. [whitespace/indent] [4] ERROR: Source/WebKit2/WebProcess/Network/webrtc/LibWebRTCSocket.h:52: enum members should use InterCaps with an initial capital letter or initial 'k' for C-style enums. [readability/enum_casing] [4] ERROR: Source/WebKit2/Shared/RTCNetwork.h:52: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] Total errors found: 5 in 41 files If any of these errors are false positives, please file a bug against check-webkit-style.
Build Bot
Comment 22 2017-01-31 02:05:30 PST
Comment on attachment 300182 [details] Patch Attachment 300182 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/2978395 New failing tests: css3/filters/backdrop/dynamic-with-clip-path.html
Build Bot
Comment 23 2017-01-31 02:05:33 PST
Created attachment 300198 [details] Archive of layout-test-results from ews122 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews122 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.6
youenn fablet
Comment 24 2017-01-31 08:27:18 PST
Comment on attachment 300182 [details] Patch Failure is unrelated to this patch
Alex Christensen
Comment 25 2017-01-31 10:34:52 PST
Comment on attachment 300182 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=300182&action=review > Source/WebKit2/ChangeLog:11 > + 1 Resolution of DNS names (RTCResikver) RTCResolver > Source/WebKit2/NetworkProcess/webrtc/LibWebRTCSocketClient.cpp:61 > + extra space > Source/WebKit2/NetworkProcess/webrtc/LibWebRTCSocketClient.cpp:91 > + auto identifier = m_identifier; > + m_rtcProvider.sendFromMainThread([identifier, sentPacket](IPC::Connection& connection) { You might be able to do identifier = m_identifier > Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.cpp:133 > + CFHostClientContext context; > + context.version = 0; > + context.info = resolver.get(); > + context.copyDescription = nullptr; > + context.release = nullptr; > + context.retain = nullptr; Let's use an initializer list. > Source/WebKit2/WebProcess/Network/webrtc/LibWebRTCSocket.h:100 > + size_t m_availableSendingBytes { 65536 }; This should be a named constant.
youenn fablet
Comment 26 2017-01-31 11:00:02 PST
Created attachment 300236 [details] Patch for landing
WebKit Commit Bot
Comment 27 2017-01-31 11:38:49 PST
Comment on attachment 300236 [details] Patch for landing Clearing flags on attachment: 300236 Committed r211441: <http://trac.webkit.org/changeset/211441>
WebKit Commit Bot
Comment 28 2017-01-31 11:38:56 PST
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.