Skip to content

Commit

Permalink
Cherry-pick 272448.817@safari-7618-branch (a734205). https://bugs.web…
Browse files Browse the repository at this point in the history
…kit.org/show_bug.cgi?id=271816

    Add IPC validation for `WebCore::MediaConstraint`
    https://bugs.webkit.org/show_bug.cgi?id=271816
    rdar://125343106

    Reviewed by Pascoe.

    * LayoutTests/ipc/validate-media-constraint-expected.txt: Added.
    * LayoutTests/ipc/validate-media-constraint.html: Added.
    * Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:

    Canonical link: https://commits.webkit.org/272448.817@safari-7618-branch

Canonical link: https://commits.webkit.org/274313.243@webkitglib/2.44
  • Loading branch information
charliewolfe authored and aperezdc committed May 13, 2024
1 parent 605bed7 commit 9091cf2
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 4 deletions.
1 change: 1 addition & 0 deletions LayoutTests/ipc/validate-media-constraint-expected.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This test passes if it does not crash.
18 changes: 18 additions & 0 deletions LayoutTests/ipc/validate-media-constraint.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<!DOCTYPE html><!-- webkit-test-runner [ IPCTestingAPIEnabled=true ] -->
<head>
<script>
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
function test() {
if (window.IPC) {
IPC.sendMessage('UI',0,IPC.messages.UserMediaCaptureManagerProxy_CreateMediaSourceForCaptureDeviceWithConstraints.name,[{type: 'uint64_t',value: 27},{type: 'String',value: '6'},{type: 'uint8_t',value: 5},{type: 'String',value: "insertText:"},{type: 'String',value: 'undefined'},{type: 'bool',value: 0},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'bool',value: 0},{type: 'String',value: 'undefined'},{type: 'String',value: "k2"},{type: 'bool',value: 1},{type: 'uint8_t',value: 3},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'uint32_t',value: 31},{type: 'bool',value: 1},{type: 'uint32_t',value: 16},{type: 'bool',value: 0},{type: 'bool',value: 0},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'uint8_t',value: 1},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'uint32_t',value: 2},{type: 'bool',value: 1},{type: 'uint32_t',value: 22},{type: 'bool',value: 1},{type: 'uint32_t',value: 2},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'uint8_t',value: 1},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'double',value: 13},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'double',value: 341.69060169349854},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'uint8_t',value: 2},{type: 'bool',value: 1},{type: 'bool',value: 1},{type: 'bool',value: 1},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'uint8_t',value: 0},{type: 'bool',value: 1},{type: 'bool',value: 1},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'uint8_t',value: 0},{type: 'bool',value: 1},{type: 'bool',value: 1},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'uint8_t',value: 3},{type: 'Vector',value: []},{type: 'Vector',value: []},{type: 'bool',value: 1},{type: 'uint8_t',value: 1},{type: 'Vector',value: []},{type: 'Vector',value: [[{type: 'String',value: 'undefined'}]]},{type: 'bool',value: 1},{type: 'uint8_t',value: 2},{type: 'Vector',value: [[{type: 'String',value: "image/jpeg"}]]},{type: 'Vector',value: []},{type: 'bool',value: 1},{type: 'uint8_t',value: 2},{type: 'Vector',value: [[{type: 'String',value: 'undefined'}]]},{type: 'Vector',value: []},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'uint8_t',value: 0},{type: 'bool',value: 1},{type: 'bool',value: 1},{type: 'bool',value: 0},{type: 'Vector',value: [[{type: 'bool',value: 1},{type: 'uint8_t',value: 0},{type: 'bool',value: 1},{type: 'uint32_t',value: 13},{type: 'bool',value: 1},{type: 'uint32_t',value: 334},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'uint32_t',value: 1},{type: 'bool',value: 1},{type: 'uint8_t',value: 0},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'uint32_t',value: 922},{type: 'bool',value: 1},{type: 'uint32_t',value: 29},{type: 'bool',value: 1},{type: 'uint32_t',value: 797},{type: 'bool',value: 1},{type: 'uint8_t',value: 2},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'uint32_t',value: 9},{type: 'bool',value: 1},{type: 'uint32_t',value: 229},{type: 'bool',value: 1},{type: 'uint32_t',value: 10},{type: 'bool',value: 1},{type: 'uint8_t',value: 0},{type: 'bool',value: 1},{type: 'uint32_t',value: 5},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'uint32_t',value: 4},{type: 'bool',value: 1},{type: 'uint32_t',value: 14},{type: 'bool',value: 1},{type: 'uint8_t',value: 3},{type: 'bool',value: 1},{type: 'double',value: 1},{type: 'bool',value: 1},{type: 'double',value: 1108.1686887894027},{type: 'bool',value: 1},{type: 'double',value: 383.3537778773052},{type: 'bool',value: 1},{type: 'double',value: 27},{type: 'bool',value: 1},{type: 'uint8_t',value: 2},{type: 'bool',value: 1},{type: 'double',value: 4},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'double',value: 3678.8428613027586},{type: 'bool',value: 1},{type: 'double',value: 116.94614095486803},{type: 'bool',value: 1},{type: 'uint8_t',value: 0},{type: 'bool',value: 0},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'double',value: 25},{type: 'bool',value: 1},{type: 'double',value: 136.3052866093737},{type: 'bool',value: 1},{type: 'uint8_t',value: 1},{type: 'bool',value: 0},{type: 'bool',value: 0},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'uint8_t',value: 0},{type: 'bool',value: 1},{type: 'bool',value: 1},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'uint8_t',value: 2},{type: 'Vector',value: [[{type: 'String',value: 'undefined'}]]},{type: 'Vector',value: []},{type: 'bool',value: 0},{type: 'bool',value: 1},{type: 'uint8_t',value: 2},{type: 'Vector',value: []},{type: 'Vector',value: []},{type: 'bool',value: 1},{type: 'uint8_t',value: 0},{type: 'Vector',value: []},{type: 'Vector',value: []},{type: 'bool',value: 0},{type: 'bool',value: 0}]]},{type: 'bool',value: 1},{type: 'bool',value: 0},{type: 'uint64_t',value: IPC.pageID}]);
}
setTimeout(testRunner.notifyDone(), 500);
}
</script>
</head>
<body onload='test()'>
<p>This test passes if it does not crash.</p>
</body>
8 changes: 4 additions & 4 deletions Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
Original file line number Diff line number Diff line change
Expand Up @@ -5067,24 +5067,24 @@ header: <WebCore/MediaConstraints.h>
std::optional<int> m_min;
std::optional<int> m_max;
std::optional<int> m_exact;
std::optional<int> m_ideal;
[Validator='*dataType == WebCore::MediaConstraint::DataType::Integer'] std::optional<int> m_ideal;
};

[CustomHeader] class WebCore::DoubleConstraint : WebCore::MediaConstraint {
std::optional<double> m_min;
std::optional<double> m_max;
std::optional<double> m_exact;
std::optional<double> m_ideal;
[Validator='*dataType == WebCore::MediaConstraint::DataType::Double'] std::optional<double> m_ideal;
};

[CustomHeader] class WebCore::BooleanConstraint : WebCore::MediaConstraint {
std::optional<bool> m_exact;
std::optional<bool> m_ideal;
[Validator='*dataType == WebCore::MediaConstraint::DataType::Boolean'] std::optional<bool> m_ideal;
};

[CustomHeader] class WebCore::StringConstraint : WebCore::MediaConstraint {
Vector<String> m_exact;
Vector<String> m_ideal;
[Validator='*dataType == WebCore::MediaConstraint::DataType::String'] Vector<String> m_ideal;
};

header: <WebCore/VideoPreset.h>
Expand Down

0 comments on commit 9091cf2

Please sign in to comment.