Diff
Modified: trunk/LayoutTests/ChangeLog (240643 => 240644)
--- trunk/LayoutTests/ChangeLog 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/LayoutTests/ChangeLog 2019-01-29 06:20:56 UTC (rev 240644)
@@ -1,3 +1,17 @@
+2019-01-28 Devin Rousso <[email protected]>
+
+ Web Inspector: provide a way to edit page WebRTC settings on a remote target
+ https://bugs.webkit.org/show_bug.cgi?id=193863
+ <rdar://problem/47572764>
+
+ Reviewed by Joseph Pecoraro.
+
+ * inspector/page/overrideSetting-ICECandidateFilteringEnabled.html: Added.
+ * inspector/page/overrideSetting-ICECandidateFilteringEnabled-expected.txt: Added.
+ * inspector/page/overrideSetting-MockCaptureDevicesEnabled.html: Added.
+ * inspector/page/overrideSetting-MockCaptureDevicesEnabled-expected.txt: Added.
+ * platform/mac/TestExpectations:
+
2019-01-28 Ryan Haddad <[email protected]>
REGRESSION (r240553): Crash in WebCore::ScrollingTree::updateTreeFromStateNode
Added: trunk/LayoutTests/inspector/page/overrideSetting-ICECandidateFilteringEnabled-expected.txt (0 => 240644)
--- trunk/LayoutTests/inspector/page/overrideSetting-ICECandidateFilteringEnabled-expected.txt (rev 0)
+++ trunk/LayoutTests/inspector/page/overrideSetting-ICECandidateFilteringEnabled-expected.txt 2019-01-29 06:20:56 UTC (rev 240644)
@@ -0,0 +1,11 @@
+Tests for the Page.overrideSetting command.
+
+
+== Running test suite: Page.overrideSetting
+-- Running test case: Page.overrideSetting.ICECandidateFilteringEnabled
+PASS: Should not be able to establish a connection when filtering ice candidates.
+Overriding ICECandidateFilteringEnabled to false...
+PASS: Should be able to establish a connection when filtering ice candidates.
+Removing ICECandidateFilteringEnabled override...
+PASS: Should not be able to establish a connection when filtering ice candidates.
+
Added: trunk/LayoutTests/inspector/page/overrideSetting-ICECandidateFilteringEnabled.html (0 => 240644)
--- trunk/LayoutTests/inspector/page/overrideSetting-ICECandidateFilteringEnabled.html (rev 0)
+++ trunk/LayoutTests/inspector/page/overrideSetting-ICECandidateFilteringEnabled.html 2019-01-29 06:20:56 UTC (rev 240644)
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src=""
+<script>
+
+if (window.internals)
+ window.internals.setICECandidateFiltering(true);
+
+function createDataChannel() {
+ let receivedCandidate = false;
+
+ let pc = new RTCPeerConnection();
+ pc.createDataChannel("sendDataChannel");
+ pc._onicecandidate_ = (event) => {
+ if (event.candidate) {
+ receivedCandidate = true;
+ return;
+ }
+
+ if (receivedCandidate) {
+ pc.createOffer().then((offer) => {
+ TestPage.dispatchEventToFrontend("DataChannel", {success: true});
+ });
+ } else
+ TestPage.dispatchEventToFrontend("DataChannel", {success: false});
+
+ delete pc.onicecandidate;
+ };
+ pc.createOffer().then((offer) => {
+ pc.setLocalDescription(offer);
+ });
+}
+
+function test()
+{
+ let suite = InspectorTest.createAsyncSuite("Page.overrideSetting");
+
+ suite.addTestCase({
+ name: "Page.overrideSetting.ICECandidateFilteringEnabled",
+ description: "Test that changing whether ice candidate filtering is enabled has an effect.",
+ async test() {
+ let [defaultResult] = await Promise.all([
+ InspectorTest.awaitEvent("DataChannel"),
+ InspectorTest.evaluateInPage(`createDataChannel()`),
+ ]);
+ InspectorTest.expectFalse(defaultResult.data.success, "Should not be able to establish a connection when filtering ice candidates.");
+
+ InspectorTest.log("Overriding ICECandidateFilteringEnabled to false...");
+ await PageAgent.overrideSetting(PageAgent.Setting.ICECandidateFilteringEnabled, false);
+
+ let [overriddenResult] = await Promise.all([
+ InspectorTest.awaitEvent("DataChannel"),
+ InspectorTest.evaluateInPage(`createDataChannel()`),
+ ])
+ InspectorTest.expectFalse(defaultResult.data.success, "Should be able to establish a connection when filtering ice candidates.");
+
+ InspectorTest.log("Removing ICECandidateFilteringEnabled override...");
+ await PageAgent.overrideSetting(PageAgent.Setting.ICECandidateFilteringEnabled);
+
+ let [originalResult] = await Promise.all([
+ InspectorTest.awaitEvent("DataChannel"),
+ InspectorTest.evaluateInPage(`createDataChannel()`),
+ ])
+ InspectorTest.expectFalse(defaultResult.data.success, "Should not be able to establish a connection when filtering ice candidates.");
+ },
+ });
+
+ suite.runTestCasesAndFinish();
+}
+
+</script>
+</head>
+<body _onload_="runTest()">
+ <p>Tests for the Page.overrideSetting command.</p>
+</body>
+</html>
Added: trunk/LayoutTests/inspector/page/overrideSetting-MockCaptureDevicesEnabled-expected.txt (0 => 240644)
--- trunk/LayoutTests/inspector/page/overrideSetting-MockCaptureDevicesEnabled-expected.txt (rev 0)
+++ trunk/LayoutTests/inspector/page/overrideSetting-MockCaptureDevicesEnabled-expected.txt 2019-01-29 06:20:56 UTC (rev 240644)
@@ -0,0 +1,11 @@
+Tests for the Page.overrideSetting command.
+
+
+== Running test suite: Page.overrideSetting
+-- Running test case: Page.overrideSetting.MockCaptureDevicesEnabled
+Expected Error: The I/O read operation failed.
+Overriding MockCaptureDevicesEnabled to true...
+PASS: getUserMedia should not fail when no devices are available
+Removing MockCaptureDevicesEnabled override...
+Expected Error: The I/O read operation failed.
+
Added: trunk/LayoutTests/inspector/page/overrideSetting-MockCaptureDevicesEnabled.html (0 => 240644)
--- trunk/LayoutTests/inspector/page/overrideSetting-MockCaptureDevicesEnabled.html (rev 0)
+++ trunk/LayoutTests/inspector/page/overrideSetting-MockCaptureDevicesEnabled.html 2019-01-29 06:20:56 UTC (rev 240644)
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src=""
+<script>
+
+if (window.internals)
+ window.internals.setMockMediaCaptureDevicesEnabled(false);
+
+function requestGetUserMedia() {
+ navigator.mediaDevices.getUserMedia({audio: {}, video: {}})
+ .then(() => TestPage.dispatchEventToFrontend("GetUserMedia", {success: true}))
+ .catch((error) => TestPage.dispatchEventToFrontend("GetUserMedia", {error: error.message}));
+}
+
+function test()
+{
+ let suite = InspectorTest.createAsyncSuite("Page.overrideSetting");
+
+ suite.addTestCase({
+ name: "Page.overrideSetting.MockCaptureDevicesEnabled",
+ description: "Test that changing whether mock capture devices are enabled has an effect.",
+ async test() {
+ let [defaultResult] = await Promise.all([
+ InspectorTest.awaitEvent("GetUserMedia"),
+ InspectorTest.evaluateInPage(`requestGetUserMedia()`),
+ ]);
+ InspectorTest.log("Expected Error: " + defaultResult.data.error);
+
+ InspectorTest.log("Overriding MockCaptureDevicesEnabled to true...");
+ await PageAgent.overrideSetting(PageAgent.Setting.MockCaptureDevicesEnabled, true);
+
+ let [overriddenResult] = await Promise.all([
+ InspectorTest.awaitEvent("GetUserMedia"),
+ InspectorTest.evaluateInPage(`requestGetUserMedia()`),
+ ])
+ InspectorTest.expectTrue(overriddenResult.data.success, "getUserMedia should not fail when no devices are available");
+
+ InspectorTest.log("Removing MockCaptureDevicesEnabled override...");
+ await PageAgent.overrideSetting(PageAgent.Setting.MockCaptureDevicesEnabled);
+
+ let [originalResult] = await Promise.all([
+ InspectorTest.awaitEvent("GetUserMedia"),
+ InspectorTest.evaluateInPage(`requestGetUserMedia()`),
+ ])
+ InspectorTest.log("Expected Error: " + originalResult.data.error);
+ },
+ });
+
+ suite.runTestCasesAndFinish();
+}
+
+</script>
+</head>
+<body _onload_="runTest()">
+ <p>Tests for the Page.overrideSetting command.</p>
+</body>
+</html>
Modified: trunk/LayoutTests/platform/mac/TestExpectations (240643 => 240644)
--- trunk/LayoutTests/platform/mac/TestExpectations 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/LayoutTests/platform/mac/TestExpectations 2019-01-29 06:20:56 UTC (rev 240644)
@@ -146,6 +146,9 @@
fast/mediastream/RTCPeerConnection-media-setup-callbacks-single-dialog.html [ Skip ]
fast/mediastream/RTCPeerConnection-stats.html [ Skip ]
+[ HighSierra ] inspector/page/overrideSetting-ICECandidateFilteringEnabled.html [ Skip ]
+[ HighSierra ] inspector/page/overrideSetting-MockCaptureDevicesEnabled.html [ Skip ]
+
# Asserts in debug.
[ Debug ] fast/images/large-size-image-crash.html [ Skip ]
Modified: trunk/Source/_javascript_Core/ChangeLog (240643 => 240644)
--- trunk/Source/_javascript_Core/ChangeLog 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/_javascript_Core/ChangeLog 2019-01-29 06:20:56 UTC (rev 240644)
@@ -1,3 +1,17 @@
+2019-01-28 Devin Rousso <[email protected]>
+
+ Web Inspector: provide a way to edit page WebRTC settings on a remote target
+ https://bugs.webkit.org/show_bug.cgi?id=193863
+ <rdar://problem/47572764>
+
+ Reviewed by Joseph Pecoraro.
+
+ * inspector/protocol/Page.json:
+ Add more values to the `Setting` enum type:
+ - `ICECandidateFilteringEnabled`
+ - `MediaCaptureRequiresSecureConnection`
+ - `MockCaptureDevicesEnabled`
+
2019-01-28 Ross Kirsling <[email protected]>
Remove unnecessary `using namespace WTF`s (or at least restrict their scope).
Modified: trunk/Source/_javascript_Core/inspector/protocol/Page.json (240643 => 240644)
--- trunk/Source/_javascript_Core/inspector/protocol/Page.json 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/_javascript_Core/inspector/protocol/Page.json 2019-01-29 06:20:56 UTC (rev 240644)
@@ -9,7 +9,10 @@
"description": "List of settings able to be overridden by WebInspector. Keep this in sync with FOR_EACH_INSPECTOR_OVERRIDE_SETTING.",
"enum": [
"AuthorAndUserStylesEnabled",
+ "ICECandidateFilteringEnabled",
"ImagesEnabled",
+ "MediaCaptureRequiresSecureConnection",
+ "MockCaptureDevicesEnabled",
"NeedsSiteSpecificQuirks",
"ScriptEnabled",
"WebSecurityEnabled"
Modified: trunk/Source/WebCore/ChangeLog (240643 => 240644)
--- trunk/Source/WebCore/ChangeLog 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebCore/ChangeLog 2019-01-29 06:20:56 UTC (rev 240644)
@@ -1,3 +1,44 @@
+2019-01-28 Devin Rousso <[email protected]>
+
+ Web Inspector: provide a way to edit page WebRTC settings on a remote target
+ https://bugs.webkit.org/show_bug.cgi?id=193863
+ <rdar://problem/47572764>
+
+ Reviewed by Joseph Pecoraro.
+
+ Test: inspector/page/overrideSetting-ICECandidateFilteringEnabled.html
+ inspector/page/overrideSetting-MockCaptureDevicesEnabled.html
+
+ * inspector/agents/InspectorPageAgent.cpp:
+
+ * page/Settings.yaml:
+ * page/SettingsBase.h:
+ * page/SettingsBase.cpp:
+ (SettingsBase::iceCandidateFilteringEnabledChanged): Added.
+ (SettingsBase::mockCaptureDevicesEnabledChanged): Added.
+ * Scripts/GenerateSettings.rb:
+ * Scripts/SettingsTemplates/Settings.cpp.erb:
+ Add page-level settings for WebRTC preferences.
+
+ * Modules/mediastream/UserMediaController.cpp:
+ (WebCore::UserMediaController::canCallGetUserMedia):
+
+ * testing/InternalSettings.cpp:
+ (WebCore::InternalSettings::setMediaCaptureRequiresSecureConnection):
+
+ * testing/Internals.h:
+ * testing/Internals.cpp:
+ (WebCore::Internals::Internals):
+ (WebCore::Internals::setMockMediaCaptureDevicesEnabled):
+ (WebCore::Internals::setMediaCaptureRequiresSecureConnection): Added.
+
+ * page/DeprecatedGlobalSettings.h:
+ * page/DeprecatedGlobalSettings.cpp:
+ (WebCore::DeprecatedGlobalSettings::mockCaptureDevicesEnabled): Deleted.
+ (WebCore::DeprecatedGlobalSettings::setMockCaptureDevicesEnabled): Deleted.
+ (WebCore::DeprecatedGlobalSettings::mediaCaptureRequiresSecureConnection): Deleted.
+ (WebCore::DeprecatedGlobalSettings::setMediaCaptureRequiresSecureConnection): Deleted.
+
2019-01-28 Jer Noble <[email protected]>
webkitcurrentplaybacktargetiswirelesschanged and webkitCurrentPlaybackIsWireless are non-deterministic.
Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaController.cpp (240643 => 240644)
--- trunk/Source/WebCore/Modules/mediastream/UserMediaController.cpp 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaController.cpp 2019-01-29 06:20:56 UTC (rev 240644)
@@ -29,7 +29,6 @@
#if ENABLE(MEDIA_STREAM)
#include "DOMWindow.h"
-#include "DeprecatedGlobalSettings.h"
#include "Document.h"
#include "DocumentLoader.h"
#include "Frame.h"
@@ -36,6 +35,7 @@
#include "HTMLIFrameElement.h"
#include "HTMLParserIdioms.h"
#include "SchemeRegistry.h"
+#include "Settings.h"
#include "UserMediaRequest.h"
namespace WebCore {
@@ -113,7 +113,9 @@
{
ASSERT(!types.isEmpty());
- bool requiresSecureConnection = DeprecatedGlobalSettings::mediaCaptureRequiresSecureConnection();
+ bool requiresSecureConnection = true;
+ if (auto page = document.page())
+ requiresSecureConnection = page->settings().mediaCaptureRequiresSecureConnection();
auto& documentLoader = *document.loader();
if (requiresSecureConnection && !isSecure(documentLoader))
return GetUserMediaAccess::InsecureDocument;
Modified: trunk/Source/WebCore/Scripts/GenerateSettings.rb (240643 => 240644)
--- trunk/Source/WebCore/Scripts/GenerateSettings.rb 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebCore/Scripts/GenerateSettings.rb 2019-01-29 06:20:56 UTC (rev 240644)
@@ -120,7 +120,7 @@
end
def setterFunctionName
- if @name.start_with?("css", "xss", "ftp", "dom", "dns")
+ if @name.start_with?("css", "xss", "ftp", "dom", "dns", "ice")
"set" + @name[0..2].upcase + @name[[email protected]]
else
"set" + @name[0].upcase + @name[[email protected]]
Modified: trunk/Source/WebCore/Scripts/SettingsTemplates/Settings.cpp.erb (240643 => 240644)
--- trunk/Source/WebCore/Scripts/SettingsTemplates/Settings.cpp.erb 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebCore/Scripts/SettingsTemplates/Settings.cpp.erb 2019-01-29 06:20:56 UTC (rev 240644)
@@ -125,7 +125,13 @@
if (m_<%= @setting.name %>InspectorOverride == <%= @setting.name %>InspectorOverride)
return;
m_<%= @setting.name %>InspectorOverride = <%= @setting.name %>InspectorOverride;
+<%- if @setting.conditional -%>
+#if ENABLE(<%= @setting.conditional %>)
+<%- end -%>
<%= @setting.onChange %>();
+<%- if @setting.conditional -%>
+#endif
+<%- end -%>
}
<%- end -%>
Modified: trunk/Source/WebCore/inspector/agents/InspectorPageAgent.cpp (240643 => 240644)
--- trunk/Source/WebCore/inspector/agents/InspectorPageAgent.cpp 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebCore/inspector/agents/InspectorPageAgent.cpp 2019-01-29 06:20:56 UTC (rev 240644)
@@ -83,9 +83,13 @@
using namespace Inspector;
+// Keep this in sync with Page.Setting
#define FOR_EACH_INSPECTOR_OVERRIDE_SETTING(macro) \
macro(AuthorAndUserStylesEnabled) \
+ macro(ICECandidateFilteringEnabled) \
macro(ImagesEnabled) \
+ macro(MediaCaptureRequiresSecureConnection) \
+ macro(MockCaptureDevicesEnabled) \
macro(NeedsSiteSpecificQuirks) \
macro(ScriptEnabled) \
macro(WebSecurityEnabled)
Modified: trunk/Source/WebCore/page/DeprecatedGlobalSettings.cpp (240643 => 240644)
--- trunk/Source/WebCore/page/DeprecatedGlobalSettings.cpp 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebCore/page/DeprecatedGlobalSettings.cpp 2019-01-29 06:20:56 UTC (rev 240644)
@@ -31,11 +31,6 @@
#include "RuntimeApplicationChecks.h"
#include <wtf/NeverDestroyed.h>
-#if ENABLE(MEDIA_STREAM)
-#include "MockRealtimeMediaSourceCenter.h"
-
-#endif
-
namespace WebCore {
#if USE(AVFOUNDATION)
@@ -51,11 +46,6 @@
bool DeprecatedGlobalSettings::gUsesOverlayScrollbars = false;
bool DeprecatedGlobalSettings::gMockScrollAnimatorEnabled = false;
-#if ENABLE(MEDIA_STREAM)
-bool DeprecatedGlobalSettings::gMockCaptureDevicesEnabled = false;
-bool DeprecatedGlobalSettings::gMediaCaptureRequiresSecureConnection = true;
-#endif
-
#if PLATFORM(WIN)
bool DeprecatedGlobalSettings::gShouldUseHighResolutionTimers = true;
#endif
@@ -113,29 +103,6 @@
}
#endif
-#if ENABLE(MEDIA_STREAM)
-bool DeprecatedGlobalSettings::mockCaptureDevicesEnabled()
-{
- return gMockCaptureDevicesEnabled;
-}
-
-void DeprecatedGlobalSettings::setMockCaptureDevicesEnabled(bool enabled)
-{
- gMockCaptureDevicesEnabled = enabled;
- MockRealtimeMediaSourceCenter::setMockRealtimeMediaSourceCenterEnabled(enabled);
-}
-
-bool DeprecatedGlobalSettings::mediaCaptureRequiresSecureConnection()
-{
- return gMediaCaptureRequiresSecureConnection;
-}
-
-void DeprecatedGlobalSettings::setMediaCaptureRequiresSecureConnection(bool mediaCaptureRequiresSecureConnection)
-{
- gMediaCaptureRequiresSecureConnection = mediaCaptureRequiresSecureConnection;
-}
-#endif
-
// It's very important that this setting doesn't change in the middle of a document's lifetime.
// The Mac port uses this flag when registering and deregistering platform-dependent scrollbar
// objects. Therefore, if this changes at an unexpected time, deregistration may not happen
Modified: trunk/Source/WebCore/page/DeprecatedGlobalSettings.h (240643 => 240644)
--- trunk/Source/WebCore/page/DeprecatedGlobalSettings.h 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebCore/page/DeprecatedGlobalSettings.h 2019-01-29 06:20:56 UTC (rev 240644)
@@ -103,15 +103,7 @@
static void setShouldManageAudioSessionCategory(bool flag) { gManageAudioSession = flag; }
static bool shouldManageAudioSessionCategory() { return gManageAudioSession; }
#endif
-
-#if ENABLE(MEDIA_STREAM)
- static bool mockCaptureDevicesEnabled();
- WEBCORE_EXPORT static void setMockCaptureDevicesEnabled(bool);
- static bool mediaCaptureRequiresSecureConnection();
- WEBCORE_EXPORT static void setMediaCaptureRequiresSecureConnection(bool);
-#endif
-
WEBCORE_EXPORT static void setAllowsAnySSLCertificate(bool);
static bool allowsAnySSLCertificate();
@@ -140,11 +132,6 @@
WEBCORE_EXPORT static bool gDisableScreenSizeOverride;
#endif
WEBCORE_EXPORT static bool gManageAudioSession;
-
-#if ENABLE(MEDIA_STREAM)
- static bool gMockCaptureDevicesEnabled;
- static bool gMediaCaptureRequiresSecureConnection;
-#endif
static bool gLowPowerVideoAudioBufferSizeEnabled;
static bool gResourceLoadStatisticsEnabledEnabled;
Modified: trunk/Source/WebCore/page/Settings.yaml (240643 => 240644)
--- trunk/Source/WebCore/page/Settings.yaml 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebCore/page/Settings.yaml 2019-01-29 06:20:56 UTC (rev 240644)
@@ -796,3 +796,21 @@
adClickAttributionEnabled:
initial: false
+
+# Deprecated
+
+iceCandidateFilteringEnabled:
+ initial: true
+ onChange: iceCandidateFilteringEnabledChanged
+ inspectorOverride: true
+
+mockCaptureDevicesEnabled:
+ initial: false
+ conditional: MEDIA_STREAM
+ onChange: mockCaptureDevicesEnabledChanged
+ inspectorOverride: true
+
+mediaCaptureRequiresSecureConnection:
+ initial: true
+ conditional: MEDIA_STREAM
+ inspectorOverride: true
Modified: trunk/Source/WebCore/page/SettingsBase.cpp (240643 => 240644)
--- trunk/Source/WebCore/page/SettingsBase.cpp 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebCore/page/SettingsBase.cpp 2019-01-29 06:20:56 UTC (rev 240644)
@@ -48,6 +48,10 @@
#include <limits>
#include <wtf/StdLibExtras.h>
+#if ENABLE(MEDIA_STREAM)
+#include "MockRealtimeMediaSourceCenter.h"
+#endif
+
namespace WebCore {
static void invalidateAfterGenericFamilyChange(Page* page)
@@ -304,6 +308,17 @@
Page::refreshPlugins(false);
}
+void SettingsBase::iceCandidateFilteringEnabledChanged()
+{
+ if (!m_page)
+ return;
+
+ if (m_page->settings().iceCandidateFilteringEnabled())
+ m_page->enableICECandidateFiltering();
+ else
+ m_page->disableICECandidateFiltering();
+}
+
#if ENABLE(TEXT_AUTOSIZING)
void SettingsBase::shouldEnableTextAutosizingBoostChanged()
@@ -321,6 +336,17 @@
#endif
+#if ENABLE(MEDIA_STREAM)
+void SettingsBase::mockCaptureDevicesEnabledChanged()
+{
+ bool enabled = false;
+ if (m_page)
+ enabled = m_page->settings().mockCaptureDevicesEnabled();
+
+ MockRealtimeMediaSourceCenter::setMockRealtimeMediaSourceCenterEnabled(enabled);
+}
+#endif
+
void SettingsBase::userStyleSheetLocationChanged()
{
if (m_page)
Modified: trunk/Source/WebCore/page/SettingsBase.h (240643 => 240644)
--- trunk/Source/WebCore/page/SettingsBase.h 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebCore/page/SettingsBase.h 2019-01-29 06:20:56 UTC (rev 240644)
@@ -192,9 +192,13 @@
void hiddenPageDOMTimerThrottlingStateChanged();
void hiddenPageCSSAnimationSuspensionEnabledChanged();
void resourceUsageOverlayVisibleChanged();
+ void iceCandidateFilteringEnabledChanged();
#if ENABLE(TEXT_AUTOSIZING)
void shouldEnableTextAutosizingBoostChanged();
#endif
+#if ENABLE(MEDIA_STREAM)
+ void mockCaptureDevicesEnabledChanged();
+#endif
Page* m_page;
Modified: trunk/Source/WebCore/page/SettingsDefaultValues.h (240643 => 240644)
--- trunk/Source/WebCore/page/SettingsDefaultValues.h 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebCore/page/SettingsDefaultValues.h 2019-01-29 06:20:56 UTC (rev 240644)
@@ -109,6 +109,5 @@
#else
static const bool defaultConicGradient = false;
#endif
-
}
Modified: trunk/Source/WebCore/testing/InternalSettings.cpp (240643 => 240644)
--- trunk/Source/WebCore/testing/InternalSettings.cpp 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebCore/testing/InternalSettings.cpp 2019-01-29 06:20:56 UTC (rev 240644)
@@ -462,7 +462,7 @@
if (!m_page)
return Exception { InvalidAccessError };
#if ENABLE(MEDIA_STREAM)
- DeprecatedGlobalSettings::setMediaCaptureRequiresSecureConnection(requires);
+ m_page->settings().setMediaCaptureRequiresSecureConnection(requires);
#else
UNUSED_PARAM(requires);
#endif
Modified: trunk/Source/WebCore/testing/Internals.cpp (240643 => 240644)
--- trunk/Source/WebCore/testing/Internals.cpp 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebCore/testing/Internals.cpp 2019-01-29 06:20:56 UTC (rev 240644)
@@ -534,7 +534,7 @@
#if ENABLE(MEDIA_STREAM)
setMockMediaCaptureDevicesEnabled(true);
- WebCore::DeprecatedGlobalSettings::setMediaCaptureRequiresSecureConnection(false);
+ setMediaCaptureRequiresSecureConnection(false);
#endif
#if ENABLE(WIRELESS_PLAYBACK_TARGET)
@@ -1472,9 +1472,18 @@
void Internals::setMockMediaCaptureDevicesEnabled(bool enabled)
{
- WebCore::DeprecatedGlobalSettings::setMockCaptureDevicesEnabled(enabled);
+ Document* document = contextDocument();
+ if (auto* page = document->page())
+ page->settings().setMockCaptureDevicesEnabled(enabled);
}
+void Internals::setMediaCaptureRequiresSecureConnection(bool enabled)
+{
+ Document* document = contextDocument();
+ if (auto* page = document->page())
+ page->settings().setMediaCaptureRequiresSecureConnection(enabled);
+}
+
static std::unique_ptr<MediaRecorderPrivate> createRecorderMockSource()
{
return std::unique_ptr<MediaRecorderPrivateMock>(new MediaRecorderPrivateMock);
Modified: trunk/Source/WebCore/testing/Internals.h (240643 => 240644)
--- trunk/Source/WebCore/testing/Internals.h 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebCore/testing/Internals.h 2019-01-29 06:20:56 UTC (rev 240644)
@@ -507,6 +507,7 @@
#if ENABLE(MEDIA_STREAM)
void setMockMediaCaptureDevicesEnabled(bool);
+ void setMediaCaptureRequiresSecureConnection(bool);
void setCustomPrivateRecorderCreator();
#endif
Modified: trunk/Source/WebInspectorUI/ChangeLog (240643 => 240644)
--- trunk/Source/WebInspectorUI/ChangeLog 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebInspectorUI/ChangeLog 2019-01-29 06:20:56 UTC (rev 240644)
@@ -1,3 +1,22 @@
+2019-01-28 Devin Rousso <[email protected]>
+
+ Web Inspector: provide a way to edit page WebRTC settings on a remote target
+ https://bugs.webkit.org/show_bug.cgi?id=193863
+ <rdar://problem/47572764>
+
+ Reviewed by Joseph Pecoraro.
+
+ * UserInterface/Base/Main.js:
+ (WI.loaded):
+ (WI.initializeTarget):
+ (WI._handleDeviceSettingsToolbarButtonClicked):
+ (WI._handleDeviceSettingsToolbarButtonClicked.createCheckbox):
+ (WI._handleDeviceSettingsToolbarButtonClicked.createColumns): Deleted.
+ * UserInterface/Views/Main.css:
+ (.device-settings-content .container): Added.
+
+ * Localizations/en.lproj/localizedStrings.js:
+
2019-01-28 Matt Baker <[email protected]>
Web Inspector: Elements tab should toggle visibility for all selected nodes
Modified: trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js (240643 => 240644)
--- trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js 2019-01-29 06:20:56 UTC (rev 240644)
@@ -59,6 +59,7 @@
localizedStrings["%s delay"] = "%s delay";
localizedStrings["%s eval\n%s async"] = "%s eval\n%s async";
localizedStrings["%s interval"] = "%s interval";
+localizedStrings["%s:"] = "%s:";
localizedStrings["(Action %s)"] = "(Action %s)";
localizedStrings["(Disk)"] = "(Disk)";
localizedStrings["(Index)"] = "(Index)";
@@ -104,6 +105,7 @@
localizedStrings["All items in \u0022%s\u0022 must be error objects"] = "All items in \u0022%s\u0022 must be error objects";
localizedStrings["All items in \u0022%s\u0022 must be non-empty strings"] = "All items in \u0022%s\u0022 must be non-empty strings";
localizedStrings["All items in \u0022%s\u0022 must be valid DOM nodes"] = "All items in \u0022%s\u0022 must be valid DOM nodes";
+localizedStrings["Allow Media Capture on Insecure Sites"] = "Allow Media Capture on Insecure Sites";
localizedStrings["An error occurred trying to load the resource."] = "An error occurred trying to load the resource.";
localizedStrings["An error occurred trying to read the \u201C%s\u201D table."] = "An error occurred trying to read the \u201C%s\u201D table.";
localizedStrings["An unexpected error %s occurred."] = "An unexpected error %s occurred.";
@@ -304,6 +306,7 @@
localizedStrings["Disable Breakpoint"] = "Disable Breakpoint";
localizedStrings["Disable Breakpoints"] = "Disable Breakpoints";
localizedStrings["Disable Event Listener"] = "Disable Event Listener";
+localizedStrings["Disable ICE Candidate Restrictions"] = "Disable ICE Candidate Restrictions";
localizedStrings["Disable Program"] = "Disable Program";
localizedStrings["Disable all breakpoints (%s)"] = "Disable all breakpoints (%s)";
localizedStrings["Disable paint flashing"] = "Disable paint flashing";
@@ -1023,6 +1026,7 @@
localizedStrings["Untitled"] = "Untitled";
localizedStrings["Use Default Appearance"] = "Use Default Appearance";
localizedStrings["Use Default Media Styles"] = "Use Default Media Styles";
+localizedStrings["Use Mock Capture Devices"] = "Use Mock Capture Devices";
localizedStrings["Use the resource cache when loading resources"] = "Use the resource cache when loading resources";
localizedStrings["User Agent"] = "User Agent";
localizedStrings["User Agent Stylesheet"] = "User Agent Stylesheet";
Modified: trunk/Source/WebInspectorUI/UserInterface/Base/Main.js (240643 => 240644)
--- trunk/Source/WebInspectorUI/UserInterface/Base/Main.js 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebInspectorUI/UserInterface/Base/Main.js 2019-01-29 06:20:56 UTC (rev 240644)
@@ -162,7 +162,7 @@
this._windowKeydownListeners = [];
this._targetsAvailablePromise = new WI.WrappedPromise;
WI._overridenDeviceUserAgent = null;
- WI._overridenDeviceSettings = new Set;
+ WI._overridenDeviceSettings = new Map;
// Targets.
WI.backendTarget = null;
@@ -612,8 +612,8 @@
// COMPATIBILITY (iOS 12.2): Page.overrideSetting did not exist.
if (target.PageAgent.overrideSetting) {
- for (let setting of WI._overridenDeviceSettings)
- target.PageAgent.overrideSetting(setting, true);
+ for (let [setting, value] of WI._overridenDeviceSettings)
+ target.PageAgent.overrideSetting(setting, value);
}
// COMPATIBILITY (iOS 8): Page.setShowPaintRects did not exist.
@@ -1990,7 +1990,7 @@
}
}
- function applyOverriddenSetting(setting, callback) {
+ function applyOverriddenSetting(setting, value, callback) {
if (WI._overridenDeviceSettings.has(setting)) {
// We've just "disabled" the checkbox, so clear the override instead of applying it.
PageAgent.overrideSetting(setting, (error) => {
@@ -2004,8 +2004,6 @@
updateActivatedState();
});
} else {
- // Override to false since the labels are the inverse of the setting.
- const value = false;
PageAgent.overrideSetting(setting, value, (error) => {
if (error) {
console.error(error);
@@ -2012,7 +2010,7 @@
return;
}
- WI._overridenDeviceSettings.add(setting);
+ WI._overridenDeviceSettings.set(setting, value);
callback(true);
updateActivatedState();
});
@@ -2031,20 +2029,10 @@
return container;
}
- function createColumns(parent, count) {
- let columnContainer = parent.appendChild(document.createElement("div"));
- columnContainer.classList.add("columns");
+ function createCheckbox(container, label, setting, value) {
+ if (!setting)
+ return;
- let columns = [];
- for (let i = 0; i < count; ++i) {
- let column = columnContainer.appendChild(document.createElement("div"));
- column.classList.add("column");
- columns.push(column);
- }
- return columns;
- }
-
- function createCheckbox(container, label, setting) {
let labelElement = container.appendChild(document.createElement("label"));
let checkboxElement = labelElement.appendChild(document.createElement("input"));
@@ -2051,7 +2039,7 @@
checkboxElement.type = "checkbox";
checkboxElement.checked = WI._overridenDeviceSettings.has(setting);
checkboxElement.addEventListener("change", (event) => {
- applyOverriddenSetting(setting, (enabled) => {
+ applyOverriddenSetting(setting, value, (enabled) => {
checkboxElement.checked = enabled;
});
});
@@ -2168,13 +2156,51 @@
}
});
- let disableColumns = createColumns(createContainer(contentElement, WI.UIString("Disable:")), 2);
- createCheckbox(disableColumns[0], WI.UIString("Images"), PageAgent.Setting.ImagesEnabled);
- createCheckbox(disableColumns[0], WI.UIString("Styles"), PageAgent.Setting.AuthorAndUserStylesEnabled);
- createCheckbox(disableColumns[0], WI.UIString("_javascript_"), PageAgent.Setting.ScriptEnabled);
- createCheckbox(disableColumns[1], WI.UIString("Site-specific Hacks"), PageAgent.Setting.NeedsSiteSpecificQuirks);
- createCheckbox(disableColumns[1], WI.UIString("Cross-Origin Restrictions"), PageAgent.Setting.WebSecurityEnabled);
+ const settings = [
+ {
+ name: WI.UIString("Disable:"),
+ columns: [
+ [
+ {name: WI.UIString("Images"), setting: PageAgent.Setting.ImagesEnabled, value: false},
+ {name: WI.UIString("Styles"), setting: PageAgent.Setting.AuthorAndUserStylesEnabled, value: false},
+ {name: WI.UIString("_javascript_"), setting: PageAgent.Setting.ScriptEnabled, value: false},
+ ],
+ [
+ {name: WI.UIString("Site-specific Hacks"), setting: PageAgent.Setting.NeedsSiteSpecificQuirks, value: false},
+ {name: WI.UIString("Cross-Origin Restrictions"), setting: PageAgent.Setting.WebSecurityEnabled, value: false},
+ ]
+ ],
+ },
+ {
+ name: WI.UIString("%s:").format(WI.unlocalizedString("WebRTC")),
+ columns: [
+ [
+ {name: WI.UIString("Allow Media Capture on Insecure Sites"), setting: PageAgent.Setting.MediaCaptureRequiresSecureConnection, value: false},
+ {name: WI.UIString("Disable ICE Candidate Restrictions"), setting: PageAgent.Setting.ICECandidateFilteringEnabled, value: false},
+ {name: WI.UIString("Use Mock Capture Devices"), setting: PageAgent.Setting.MockCaptureDevicesEnabled, value: true},
+ ],
+ ],
+ },
+ ];
+ for (let group of settings) {
+ if (!group.columns.some((column) => column.some((item) => item.setting)))
+ continue;
+
+ let container = createContainer(contentElement, group.name);
+
+ let columnContainer = container.appendChild(document.createElement("div"));
+ columnContainer.classList.add("columns");
+
+ for (let column of group.columns) {
+ let columnElement = columnContainer.appendChild(document.createElement("div"));
+ columnElement.classList.add("column");
+
+ for (let item of column)
+ createCheckbox(columnElement, item.name, item.setting, item.value);
+ }
+ }
+
WI._deviceSettingsPopover.presentNewContentWithFrame(contentElement, calculateTargetFrame(), preferredEdges);
};
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/Main.css (240643 => 240644)
--- trunk/Source/WebInspectorUI/UserInterface/Views/Main.css 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/Main.css 2019-01-29 06:20:56 UTC (rev 240644)
@@ -391,6 +391,10 @@
padding: 8px;
}
+.device-settings-content .container {
+ margin-top: 8px;
+}
+
.device-settings-content .columns {
display: flex;
}
Modified: trunk/Source/WebKit/ChangeLog (240643 => 240644)
--- trunk/Source/WebKit/ChangeLog 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebKit/ChangeLog 2019-01-29 06:20:56 UTC (rev 240644)
@@ -1,3 +1,14 @@
+2019-01-28 Devin Rousso <[email protected]>
+
+ Web Inspector: provide a way to edit page WebRTC settings on a remote target
+ https://bugs.webkit.org/show_bug.cgi?id=193863
+ <rdar://problem/47572764>
+
+ Reviewed by Joseph Pecoraro.
+
+ * Shared/WebPreferences.yaml:
+ Add page-level settings for WebRTC preferences.
+
2019-01-28 Ross Kirsling <[email protected]>
Remove unnecessary `using namespace WTF`s (or at least restrict their scope).
Modified: trunk/Source/WebKit/Shared/WebPreferences.yaml (240643 => 240644)
--- trunk/Source/WebKit/Shared/WebPreferences.yaml 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebKit/Shared/WebPreferences.yaml 2019-01-29 06:20:56 UTC (rev 240644)
@@ -629,23 +629,11 @@
defaultValue: true
webcoreName: httpEquivEnabled
-MockCaptureDevicesEnabled:
- type: bool
- defaultValue: DEFAULT_MOCK_CAPTURE_DEVICES_ENABLED
- webcoreBinding: DeprecatedGlobalSettings
- condition: ENABLE(MEDIA_STREAM)
-
MockCaptureDevicesPromptEnabled:
type: bool
defaultValue: true
webcoreBinding: none
-MediaCaptureRequiresSecureConnection:
- type: bool
- defaultValue: true
- webcoreBinding: DeprecatedGlobalSettings
- condition: ENABLE(MEDIA_STREAM)
-
# FIXME: What is this for?
EnumeratingAllNetworkInterfacesEnabled:
type: bool
@@ -652,12 +640,6 @@
defaultValue: false
webcoreBinding: none
-# FIXME: What is this for?
-ICECandidateFilteringEnabled:
- type: bool
- defaultValue: true
- webcoreBinding: none
-
ShadowDOMEnabled:
type: bool
defaultValue: true
@@ -1551,3 +1533,19 @@
humanReadableDescription: "Enable Ad Click Attribution for Cross-Site Link Navigations"
webcoreBinding: RuntimeEnabledFeatures
category: internal
+
+# Deprecated
+
+ICECandidateFilteringEnabled:
+ type: bool
+ defaultValue: true
+
+MockCaptureDevicesEnabled:
+ type: bool
+ defaultValue: DEFAULT_MOCK_CAPTURE_DEVICES_ENABLED
+ condition: ENABLE(MEDIA_STREAM)
+
+MediaCaptureRequiresSecureConnection:
+ type: bool
+ defaultValue: true
+ condition: ENABLE(MEDIA_STREAM)
Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (240643 => 240644)
--- trunk/Source/WebKitLegacy/mac/ChangeLog 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog 2019-01-29 06:20:56 UTC (rev 240644)
@@ -1,3 +1,15 @@
+2019-01-28 Devin Rousso <[email protected]>
+
+ Web Inspector: provide a way to edit page WebRTC settings on a remote target
+ https://bugs.webkit.org/show_bug.cgi?id=193863
+ <rdar://problem/47572764>
+
+ Reviewed by Joseph Pecoraro.
+
+ * WebView/WebView.mm:
+ (-[WebView _preferencesChanged:]):
+ Add page-level settings for WebRTC preferences.
+
2019-01-28 Andy Estes <[email protected]>
[watchOS] Enable Parental Controls content filtering
Modified: trunk/Source/WebKitLegacy/mac/WebView/WebView.mm (240643 => 240644)
--- trunk/Source/WebKitLegacy/mac/WebView/WebView.mm 2019-01-29 06:11:43 UTC (rev 240643)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebView.mm 2019-01-29 06:20:56 UTC (rev 240644)
@@ -3057,8 +3057,8 @@
#endif
#if ENABLE(MEDIA_STREAM)
- DeprecatedGlobalSettings::setMockCaptureDevicesEnabled(false);
- DeprecatedGlobalSettings::setMediaCaptureRequiresSecureConnection(true);
+ settings.setMockCaptureDevicesEnabled(false);
+ settings.setMediaCaptureRequiresSecureConnection(true);
RuntimeEnabledFeatures::sharedFeatures().setMediaStreamEnabled(false);
RuntimeEnabledFeatures::sharedFeatures().setMediaDevicesEnabled(false);
RuntimeEnabledFeatures::sharedFeatures().setMediaRecorderEnabled(preferences.mediaRecorderEnabled);