| Differences between
and this patch
- a/Source/JavaScriptCore/ChangeLog +31 lines
Lines 1-3 a/Source/JavaScriptCore/ChangeLog_sec1
1
2019-09-24  Yury Semikhatsky  <yurys@chromium.org>
2
3
        Web Inspector: tests under LayoutTests/inspector/debugger are flaky
4
        https://bugs.webkit.org/show_bug.cgi?id=137131
5
        <rdar://problem/18461335>
6
7
        Reviewed by NOBODY (OOPS!).
8
9
        Changed breakpoint resolution logic to make it cosistent across platforms and
10
        better handle the case when there are several DebuggerPausePositions at the same
11
        offset (but with different types).
12
13
        * debugger/Debugger.cpp:
14
        (JSC::Debugger::resolveBreakpoint): clarified that in the map columns are 0-based.
15
        * debugger/DebuggerParseData.cpp:
16
        (JSC::DebuggerPausePositions::breakpointLocationForLineColumn): replaced custom
17
        binary search with std::lower_bound. If there are several pause positions at the
18
        same offset they will be sorted by the type and the algorithm is guaranteed to see
19
        legtmost one first.
20
21
        (JSC::DebuggerPausePositions::sort): use type as secondary ordering component.
22
        * debugger/DebuggerParseData.h: Rearranged type constants so that Enter < Pause < Leave
23
        this change along with sorting by type should guarantee that in case of several pause
24
        positions at the same line Enter goes before Pause before Leave and the breakpoint
25
        resolution will yield result similar to that when each pause locations has different
26
        position.
27
28
        * inspector/protocol/Debugger.json: clarified that positions are 0-based.
29
        * parser/ParserTokens.h:
30
        (JSC::JSTextPosition::column const): added helper method for computing column.
31
1
2019-09-19  Mark Lam  <mark.lam@apple.com>
32
2019-09-19  Mark Lam  <mark.lam@apple.com>
2
33
3
        Refactoring: fix broken indentation in JSNonDestructibleProxy.h.
34
        Refactoring: fix broken indentation in JSNonDestructibleProxy.h.
- a/Source/WebCore/ChangeLog +29 lines
Lines 1-3 a/Source/WebCore/ChangeLog_sec1
1
2019-09-20  Yury Semikhatsky  <yurys@chromium.org>
2
3
        Web Inspector: tests under LayoutTests/inspector/debugger are flaky
4
        https://bugs.webkit.org/show_bug.cgi?id=137131
5
        <rdar://problem/18461335>
6
7
        Reviewed by NOBODY (OOPS!).
8
9
        Fix debugger tests on GTK. All tests that pause on breakpoint didn't work because
10
        in layout tests InspectorFrontendClientLocal was using Timer to dispatch commands
11
        sent from the local front-end page to the inspected one. When paused inside a script
12
        triggered by the front-end nested timer event would be scheduled but never fired
13
        because in glib implementation of RunLoop::TimerBase uses event source which doesn't
14
        allow recursion (g_source_set_can_recurse is not called on the source), so dispatching
15
        Debugger.resume command didn't work when paused inside another inspector command (e.g.
16
        eval). RunLoop itself uses event source which does allow recursion. So instead of using
17
        a timer for asynchronous command dispatching with delay=0 we now schedule a task in
18
        RunLoop's queue.
19
20
        * inspector/InspectorFrontendClientLocal.cpp:
21
        (WebCore::InspectorBackendDispatchTask::dispatch):
22
        (WebCore::InspectorBackendDispatchTask::reset):
23
        (WebCore::InspectorBackendDispatchTask::InspectorBackendDispatchTask):
24
        (WebCore::InspectorBackendDispatchTask::scheduleOneShot): ensures that there is one inspector
25
        dispatch task in the queue.
26
        (WebCore::InspectorBackendDispatchTask::dispatchOneMessage): this is mostly the same behavior
27
        as was with timerFired, we should be able to dispatch all accumulated messages from the queue
28
        in one batched but for now I'd like to keep it one per iteration.
29
1
2019-09-19  Peng Liu  <peng.liu6@apple.com>
30
2019-09-19  Peng Liu  <peng.liu6@apple.com>
2
31
3
        HTMLVideoElement with a broken poster image will take square dimension
32
        HTMLVideoElement with a broken poster image will take square dimension
- a/Source/JavaScriptCore/debugger/Debugger.cpp -6 / +6 lines
Lines 359-372 void Debugger::resolveBreakpoint(Breakpoint& breakpoint, SourceProvider* sourceP a/Source/JavaScriptCore/debugger/Debugger.cpp_sec1
359
359
360
    // FIXME: <https://webkit.org/b/162771> Web Inspector: Adopt TextPosition in Inspector to avoid oneBasedInt/zeroBasedInt ambiguity
360
    // FIXME: <https://webkit.org/b/162771> Web Inspector: Adopt TextPosition in Inspector to avoid oneBasedInt/zeroBasedInt ambiguity
361
    // Inspector breakpoint line and column values are zero-based but the executable
361
    // Inspector breakpoint line and column values are zero-based but the executable
362
    // and CodeBlock line and column values are one-based.
362
    // and CodeBlock line values are one-based while column is zero-based.
363
    unsigned line = breakpoint.line + 1;
363
    unsigned line = breakpoint.line + 1;
364
    unsigned column = breakpoint.column ? breakpoint.column : Breakpoint::unspecifiedColumn;
364
    unsigned column = breakpoint.column;
365
365
366
    // Account for a <script>'s start position on the first line only.
366
    // Account for a <script>'s start position on the first line only.
367
    unsigned providerStartLine = sourceProvider->startPosition().m_line.oneBasedInt(); // One based to match the already adjusted line.
367
    unsigned providerStartLine = sourceProvider->startPosition().m_line.oneBasedInt(); // One based to match the already adjusted line.
368
    unsigned providerStartColumn = sourceProvider->startPosition().m_column.zeroBasedInt(); // Zero based so column zero is zero.
368
    unsigned providerStartColumn = sourceProvider->startPosition().m_column.zeroBasedInt(); // Zero based so column zero is zero.
369
    if (line == providerStartLine && column != Breakpoint::unspecifiedColumn) {
369
    if (line == providerStartLine && breakpoint.column) {
370
        ASSERT(providerStartColumn <= column);
370
        ASSERT(providerStartColumn <= column);
371
        if (providerStartColumn)
371
        if (providerStartColumn)
372
            column -= providerStartColumn;
372
            column -= providerStartColumn;
Lines 378-393 void Debugger::resolveBreakpoint(Breakpoint& breakpoint, SourceProvider* sourceP a/Source/JavaScriptCore/debugger/Debugger.cpp_sec2
378
        return;
378
        return;
379
379
380
    unsigned resolvedLine = resolvedPosition->line;
380
    unsigned resolvedLine = resolvedPosition->line;
381
    unsigned resolvedColumn = resolvedPosition->offset - resolvedPosition->lineStartOffset + 1;
381
    unsigned resolvedColumn = resolvedPosition->offset - resolvedPosition->lineStartOffset;
382
382
383
    // Re-account for a <script>'s start position on the first line only.
383
    // Re-account for a <script>'s start position on the first line only.
384
    if (resolvedLine == providerStartLine && column != Breakpoint::unspecifiedColumn) {
384
    if (resolvedLine == providerStartLine && breakpoint.column) {
385
        if (providerStartColumn)
385
        if (providerStartColumn)
386
            resolvedColumn += providerStartColumn;
386
            resolvedColumn += providerStartColumn;
387
    }
387
    }
388
388
389
    breakpoint.line = resolvedLine - 1;
389
    breakpoint.line = resolvedLine - 1;
390
    breakpoint.column = resolvedColumn - 1;
390
    breakpoint.column = resolvedColumn;
391
    breakpoint.resolved = true;
391
    breakpoint.resolved = true;
392
}
392
}
393
393
- a/Source/JavaScriptCore/debugger/DebuggerParseData.cpp -36 / +24 lines
Lines 33-75 namespace JSC { a/Source/JavaScriptCore/debugger/DebuggerParseData.cpp_sec1
33
33
34
Optional<JSTextPosition> DebuggerPausePositions::breakpointLocationForLineColumn(int line, int column)
34
Optional<JSTextPosition> DebuggerPausePositions::breakpointLocationForLineColumn(int line, int column)
35
{
35
{
36
    unsigned start = 0;
36
    DebuggerPausePosition position;
37
    unsigned end = m_positions.size();
37
    position.position.line = line;
38
    while (start != end) {
38
    position.position.offset = column;
39
        unsigned middle = start + ((end - start) / 2);
39
    position.position.lineStartOffset = 0;
40
        DebuggerPausePosition& pausePosition = m_positions[middle];
40
    auto it = std::lower_bound(m_positions.begin(), m_positions.end(), position, [] (const DebuggerPausePosition& a, const DebuggerPausePosition& b) {
41
        int pauseLine = pausePosition.position.line;
41
        if (a.position.line == b.position.line)
42
        int pauseColumn = pausePosition.position.offset - pausePosition.position.lineStartOffset;
42
            return a.position.column() < b.position.column();
43
43
        return a.position.line < b.position.line;
44
        if (line < pauseLine) {
44
    });
45
            end = middle;
46
            continue;
47
        }
48
        if (line > pauseLine) {
49
            start = middle + 1;
50
            continue;
51
        }
52
45
53
        if (column == pauseColumn) {
46
    if (it == m_positions.end())
54
            // Found an exact position match. Roll forward if this was a function Entry.
47
        return WTF::nullopt;
55
            // We are guarenteed to have a Leave for an Entry so we don't need to bounds check.
56
            while (true) {
57
                if (pausePosition.type != DebuggerPausePositionType::Enter)
58
                    return Optional<JSTextPosition>(pausePosition.position);
59
                pausePosition = m_positions[middle++];
60
            }
61
        }
62
48
63
        if (column < pauseColumn)
49
    if (line == it->position.line && column == it->position.column()) {
64
            end = middle;
50
        // Found an exact position match. Roll forward if this was a function Entry.
65
        else
51
        // We are guarenteed to have a Leave for an Entry so we don't need to bounds check.
66
            start = middle + 1;
52
        while (true) {
53
            if (it->type != DebuggerPausePositionType::Enter)
54
                return Optional<JSTextPosition>(it->position);
55
            ++it;
56
        }
67
    }
57
    }
68
58
69
    // Past the end, no possible pause locations.
70
    if (start >= m_positions.size())
71
        return WTF::nullopt;
72
73
    // If the next location is a function Entry we will need to decide if we should go into
59
    // If the next location is a function Entry we will need to decide if we should go into
74
    // the function or go past the function. We decide to go into the function if the
60
    // the function or go past the function. We decide to go into the function if the
75
    // input is on the same line as the function entry. For example:
61
    // input is on the same line as the function entry. For example:
Lines 86-92 Optional<JSTextPosition> DebuggerPausePositions::breakpointLocationForLineColumn a/Source/JavaScriptCore/debugger/DebuggerParseData.cpp_sec2
86
    // If the input was line 3, go into the function to pause on line 4.
72
    // If the input was line 3, go into the function to pause on line 4.
87
73
88
    // Valid pause location. Use it.
74
    // Valid pause location. Use it.
89
    DebuggerPausePosition& firstSlidePosition = m_positions[start];
75
    DebuggerPausePosition& firstSlidePosition = *it;
90
    if (firstSlidePosition.type != DebuggerPausePositionType::Enter)
76
    if (firstSlidePosition.type != DebuggerPausePositionType::Enter)
91
        return Optional<JSTextPosition>(firstSlidePosition.position);
77
        return Optional<JSTextPosition>(firstSlidePosition.position);
92
78
Lines 94-101 Optional<JSTextPosition> DebuggerPausePositions::breakpointLocationForLineColumn a/Source/JavaScriptCore/debugger/DebuggerParseData.cpp_sec3
94
    // If entryStackSize is > 0 we are skipping functions.
80
    // If entryStackSize is > 0 we are skipping functions.
95
    bool shouldEnterFunction = firstSlidePosition.position.line == line;
81
    bool shouldEnterFunction = firstSlidePosition.position.line == line;
96
    int entryStackSize = shouldEnterFunction ? 0 : 1;
82
    int entryStackSize = shouldEnterFunction ? 0 : 1;
97
    for (unsigned i = start + 1; i < m_positions.size(); ++i) {
83
    for (++it; it != m_positions.end(); ++it) {
98
        DebuggerPausePosition& slidePosition = m_positions[i];
84
        DebuggerPausePosition& slidePosition = *it;
99
        ASSERT(entryStackSize >= 0);
85
        ASSERT(entryStackSize >= 0);
100
86
101
        // Already skipping functions.
87
        // Already skipping functions.
Lines 124-129 Optional<JSTextPosition> DebuggerPausePositions::breakpointLocationForLineColumn a/Source/JavaScriptCore/debugger/DebuggerParseData.cpp_sec4
124
void DebuggerPausePositions::sort()
110
void DebuggerPausePositions::sort()
125
{
111
{
126
    std::sort(m_positions.begin(), m_positions.end(), [] (const DebuggerPausePosition& a, const DebuggerPausePosition& b) {
112
    std::sort(m_positions.begin(), m_positions.end(), [] (const DebuggerPausePosition& a, const DebuggerPausePosition& b) {
113
        if (a.position.offset == b.position.offset)
114
            return a.type < b.type;
127
        return a.position.offset < b.position.offset;
115
        return a.position.offset < b.position.offset;
128
    });
116
    });
129
}
117
}
- a/Source/JavaScriptCore/debugger/DebuggerParseData.h -1 / +1 lines
Lines 33-39 namespace JSC { a/Source/JavaScriptCore/debugger/DebuggerParseData.h_sec1
33
class SourceProvider;
33
class SourceProvider;
34
class VM;
34
class VM;
35
35
36
enum class DebuggerPausePositionType { Enter, Leave, Pause };
36
enum class DebuggerPausePositionType { Enter, Pause, Leave };
37
struct DebuggerPausePosition {
37
struct DebuggerPausePosition {
38
    DebuggerPausePositionType type;
38
    DebuggerPausePositionType type;
39
    JSTextPosition position;
39
    JSTextPosition position;
- a/Source/JavaScriptCore/inspector/protocol/Debugger.json -2 / +2 lines
Lines 28-35 a/Source/JavaScriptCore/inspector/protocol/Debugger.json_sec1
28
            "description": "Location in the source code.",
28
            "description": "Location in the source code.",
29
            "properties": [
29
            "properties": [
30
                { "name": "scriptId", "$ref": "ScriptId", "description": "Script identifier as reported in the <code>Debugger.scriptParsed</code>." },
30
                { "name": "scriptId", "$ref": "ScriptId", "description": "Script identifier as reported in the <code>Debugger.scriptParsed</code>." },
31
                { "name": "lineNumber", "type": "integer", "description": "Line number in the script." },
31
                { "name": "lineNumber", "type": "integer", "description": "Line number in the script (0-based)." },
32
                { "name": "columnNumber", "type": "integer", "optional": true, "description": "Column number in the script." }
32
                { "name": "columnNumber", "type": "integer", "optional": true, "description": "Column number in the script (0-based)." }
33
            ]
33
            ]
34
        },
34
        },
35
        {
35
        {
- a/Source/JavaScriptCore/parser/ParserTokens.h +2 lines
Lines 217-222 struct JSTextPosition { a/Source/JavaScriptCore/parser/ParserTokens.h_sec1
217
        return !(*this == other);
217
        return !(*this == other);
218
    }
218
    }
219
219
220
    int column() const { return offset - lineStartOffset; }
221
220
    int line { 0 };
222
    int line { 0 };
221
    int offset { 0 };
223
    int offset { 0 };
222
    int lineStartOffset { 0 };
224
    int lineStartOffset { 0 };
- a/Source/WebCore/inspector/InspectorFrontendClientLocal.cpp -14 / +22 lines
Lines 81-98 public: a/Source/WebCore/inspector/InspectorFrontendClientLocal.cpp_sec1
81
        ASSERT_ARG(message, !message.isEmpty());
81
        ASSERT_ARG(message, !message.isEmpty());
82
82
83
        m_messages.append(message);
83
        m_messages.append(message);
84
        if (!m_timer.isActive())
84
        scheduleOneShot();
85
            m_timer.startOneShot(0_s);
86
    }
85
    }
87
86
88
    void reset()
87
    void reset()
89
    {
88
    {
90
        m_messages.clear();
89
        m_messages.clear();
91
        m_timer.stop();
92
        m_inspectedPageController = nullptr;
90
        m_inspectedPageController = nullptr;
93
    }
91
    }
94
92
95
    void timerFired()
93
private:
94
    InspectorBackendDispatchTask(InspectorController* inspectedPageController)
95
        : m_inspectedPageController(inspectedPageController)
96
    {
97
        ASSERT_ARG(inspectedPageController, inspectedPageController);
98
    }
99
100
    void scheduleOneShot()
101
    {
102
        if (m_hasTaskInQueue)
103
            return;
104
        m_hasTaskInQueue = true;
105
        RunLoop::current().dispatch([this, protectedThis = makeRef(*this)] {
106
            m_hasTaskInQueue = false;
107
            dispatchOneMessage();
108
        });
109
    }
110
111
    void dispatchOneMessage()
96
    {
112
    {
97
        ASSERT(m_inspectedPageController);
113
        ASSERT(m_inspectedPageController);
98
114
Lines 104-123 public: a/Source/WebCore/inspector/InspectorFrontendClientLocal.cpp_sec2
104
            m_inspectedPageController->dispatchMessageFromFrontend(m_messages.takeFirst());
120
            m_inspectedPageController->dispatchMessageFromFrontend(m_messages.takeFirst());
105
121
106
        if (!m_messages.isEmpty() && m_inspectedPageController)
122
        if (!m_messages.isEmpty() && m_inspectedPageController)
107
            m_timer.startOneShot(0_s);
123
            scheduleOneShot();
108
    }
109
110
private:
111
    InspectorBackendDispatchTask(InspectorController* inspectedPageController)
112
        : m_inspectedPageController(inspectedPageController)
113
        , m_timer(*this, &InspectorBackendDispatchTask::timerFired)
114
    {
115
        ASSERT_ARG(inspectedPageController, inspectedPageController);
116
    }
124
    }
117
125
118
    InspectorController* m_inspectedPageController { nullptr };
126
    InspectorController* m_inspectedPageController { nullptr };
119
    Timer m_timer;
120
    Deque<String> m_messages;
127
    Deque<String> m_messages;
128
    bool m_hasTaskInQueue { false };
121
};
129
};
122
130
123
String InspectorFrontendClientLocal::Settings::getProperty(const String&)
131
String InspectorFrontendClientLocal::Settings::getProperty(const String&)
- a/LayoutTests/ChangeLog +14 lines
Lines 1-3 a/LayoutTests/ChangeLog_sec1
1
2019-09-20  Yury Semikhatsky  <yurys@chromium.org>
2
3
        Web Inspector: tests under LayoutTests/inspector/debugger are flaky
4
        https://bugs.webkit.org/show_bug.cgi?id=137131
5
        <rdar://problem/18461335>
6
7
        Reviewed by NOBODY (OOPS!).
8
9
        Enable inspector/debugger tests on GTK.
10
11
        * inspector/debugger/breakpoints/resolved-dump-all-pause-locations-expected.txt: Rebaselined the test
12
        after changes in the breakpoint resolution code. Now the output on GTK is the same as on Mac.
13
        * platform/gtk/TestExpectations:
14
1
2019-09-19  Peng Liu  <peng.liu6@apple.com>
15
2019-09-19  Peng Liu  <peng.liu6@apple.com>
2
16
3
        HTMLVideoElement with a broken poster image will take square dimension
17
        HTMLVideoElement with a broken poster image will take square dimension
- a/LayoutTests/inspector/debugger/breakpoints/resolved-dump-all-pause-locations-expected.txt -14 / +16 lines
Lines 2166-2172 PAUSES AT: 89:7 a/LayoutTests/inspector/debugger/breakpoints/resolved-dump-all-pause-locations-expected.txt_sec1
2166
     92        x
2166
     92        x
2167
2167
2168
INSERTING AT: 89:8
2168
INSERTING AT: 89:8
2169
PAUSES AT: 94:0
2169
PAUSES AT: 98:0
2170
     86    
2170
     86    
2171
     87    x => x;
2171
     87    x => x;
2172
     88    () => 1;
2172
     88    () => 1;
Lines 2175-2184 PAUSES AT: 94:0 a/LayoutTests/inspector/debugger/breakpoints/resolved-dump-all-pause-locations-expected.txt_sec2
2175
     91    (x) => {
2175
     91    (x) => {
2176
     92        x
2176
     92        x
2177
     93    };
2177
     93    };
2178
 =>  94    |() => {
2178
     94    () => {
2179
     95        var x;
2179
     95        var x;
2180
     96    };
2180
     96    };
2181
     97    
2181
     97    
2182
 =>  98    |var fObj = {
2183
     99        f1: function() {
2184
    100            var x;
2185
    101        },
2182
2186
2183
INSERTING AT: 90:0
2187
INSERTING AT: 90:0
2184
PAUSES AT: 90:0
2188
PAUSES AT: 90:0
Lines 2242-2247 PAUSES AT: 93:0 a/LayoutTests/inspector/debugger/breakpoints/resolved-dump-all-pause-locations-expected.txt_sec3
2242
     95        var x;
2246
     95        var x;
2243
     96    };
2247
     96    };
2244
2248
2249
INSERTING AT: 94:0
2250
PAUSES AT: 94:0
2251
     91    (x) => {
2252
     92        x
2253
     93    };
2254
-=>  94    |() => {
2255
     95        var x;
2256
     96    };
2257
     97    
2258
2245
INSERTING AT: 94:1
2259
INSERTING AT: 94:1
2246
PAUSES AT: 95:4
2260
PAUSES AT: 95:4
2247
     91    (x) => {
2261
     91    (x) => {
Lines 2264-2281 PAUSES AT: 96:0 a/LayoutTests/inspector/debugger/breakpoints/resolved-dump-all-pause-locations-expected.txt_sec4
2264
     98    var fObj = {
2278
     98    var fObj = {
2265
     99        f1: function() {
2279
     99        f1: function() {
2266
2280
2267
INSERTING AT: 96:1
2268
PAUSES AT: 98:0
2269
     93    };
2270
     94    () => {
2271
     95        var x;
2272
 ->  96    }#;
2273
     97    
2274
 =>  98    |var fObj = {
2275
     99        f1: function() {
2276
    100            var x;
2277
    101        },
2278
2279
INSERTING AT: 99:0
2281
INSERTING AT: 99:0
2280
PAUSES AT: 100:8
2282
PAUSES AT: 100:8
2281
     96    };
2283
     96    };
- a/LayoutTests/platform/gtk/TestExpectations -15 / +1 lines
Lines 2311-2331 webkit.org/b/116957 media/track/track-automatic-subtitles.html [ Timeout ] a/LayoutTests/platform/gtk/TestExpectations_sec1
2311
2311
2312
webkit.org/b/120682 inspector/page/archive.html [ Timeout ]
2312
webkit.org/b/120682 inspector/page/archive.html [ Timeout ]
2313
2313
2314
webkit.org/b/147518 inspector/debugger/nested-inspectors.html [ Timeout ]
2314
webkit.org/b/122571 http/tests/inspector/dom/cross-domain-inspected-node-access.html [ Timeout Pass ]
2315
webkit.org/b/122571 http/tests/inspector/dom/cross-domain-inspected-node-access.html [ Timeout Pass ]
2315
webkit.org/b/122571 inspector/debugger/setBreakpoint.html [ Timeout Pass ]
2316
webkit.org/b/122571 inspector/debugger/call-frame-function-name.html [ Timeout Pass ]
2317
webkit.org/b/122571 inspector/debugger/setBreakpoint-options-exception.html [ Timeout Pass ]
2318
webkit.org/b/122571 inspector/debugger/setPauseOnExceptions-all.html [ Timeout Pass ]
2319
webkit.org/b/122571 inspector/debugger/setPauseOnExceptions-none.html [ Timeout Pass ]
2320
webkit.org/b/122571 inspector/debugger/call-frame-this-host.html [ Timeout Pass Crash ]
2321
webkit.org/b/122571 inspector/debugger/setBreakpoint-autoContinue.html [ Timeout Pass ]
2322
webkit.org/b/122571 inspector/debugger/setPauseOnExceptions-uncaught.html [ Timeout Pass ]
2323
webkit.org/b/122571 inspector/debugger/setBreakpoint-actions.html [ Failure Timeout Pass ]
2324
webkit.org/b/122571 inspector/debugger/call-frame-this-nonstrict.html [ Timeout Pass ]
2325
webkit.org/b/122571 inspector/debugger/setBreakpoint-column.html [ Timeout Pass ]
2326
webkit.org/b/122571 inspector/debugger/setBreakpoint-condition.html [ Timeout Pass ]
2327
webkit.org/b/122571 inspector/debugger/removeBreakpoint.html [ Timeout Pass ]
2328
webkit.org/b/122571 inspector/debugger/call-frame-this-strict.html [ Timeout Pass ]
2329
webkit.org/b/122571 inspector/dom/request-child-nodes-depth.html [ Timeout Pass ]
2316
webkit.org/b/122571 inspector/dom/request-child-nodes-depth.html [ Timeout Pass ]
2330
webkit.org/b/122571 inspector/dom/focus.html [ Failure Timeout Pass ]
2317
webkit.org/b/122571 inspector/dom/focus.html [ Failure Timeout Pass ]
2331
webkit.org/b/122571 inspector/runtime/getProperties.html [ Timeout Pass Crash ]
2318
webkit.org/b/122571 inspector/runtime/getProperties.html [ Timeout Pass Crash ]
Lines 2370-2376 webkit.org/b/136674 media/track/track-cue-rendering-with-padding.html [ Timeout a/LayoutTests/platform/gtk/TestExpectations_sec2
2370
2357
2371
webkit.org/b/137698 media/video-controls-drag.html [ Timeout ]
2358
webkit.org/b/137698 media/video-controls-drag.html [ Timeout ]
2372
2359
2373
webkit.org/b/137131 inspector/debugger [ Skip ]
2374
webkit.org/b/147518 inspector/dom [ Skip ]
2360
webkit.org/b/147518 inspector/dom [ Skip ]
2375
webkit.org/b/147518 inspector/model [ Skip ]
2361
webkit.org/b/147518 inspector/model [ Skip ]
2376
webkit.org/b/147518 inspector/timeline [ Skip ]
2362
webkit.org/b/147518 inspector/timeline [ Skip ]

Return to Bug 137131