| Differences between
and this patch
- a/Source/JavaScriptCore/ChangeLog +38 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
        * bytecode/CodeBlock.cpp:
14
        (JSC::CodeBlock::hasOpDebugForLineAndColumn):
15
        * bytecode/CodeBlock.h:
16
        * debugger/Breakpoint.h: Removed Breakpoint::unspecifiedColumn, Optional<unsigned>
17
        is used instead where needed. It allows to avoid code that relies on (int)UINT_MAX => -1
18
        conversion.
19
20
        * debugger/Debugger.cpp:
21
        (JSC::Debugger::resolveBreakpoint): clarified that in the map columns are 0-based.
22
        * debugger/DebuggerParseData.cpp:
23
        (JSC::DebuggerPausePositions::breakpointLocationForLineColumn): replaced custom
24
        binary search with std::lower_bound. If there are several pause positions at the
25
        same offset they will be sorted by the type and the algorithm is guaranteed to see
26
        leftmost one first.
27
28
        (JSC::DebuggerPausePositions::sort): use type as secondary ordering component.
29
        * debugger/DebuggerParseData.h: Rearranged type constants so that Enter < Pause < Leave
30
        this change along with sorting by type should guarantee that in case of several pause
31
        positions at the same line Enter goes before Pause before Leave and the breakpoint
32
        resolution will yield result similar to that when each pause locations has different
33
        position.
34
35
        * inspector/protocol/Debugger.json: clarified that positions are 0-based.
36
        * parser/ParserTokens.h:
37
        (JSC::JSTextPosition::column const): added helper method for computing column.
38
1
2019-09-19  Mark Lam  <mark.lam@apple.com>
39
2019-09-19  Mark Lam  <mark.lam@apple.com>
2
40
3
        Refactoring: fix broken indentation in JSNonDestructibleProxy.h.
41
        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 batch 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/bytecode/CodeBlock.cpp -2 / +2 lines
Lines 1865-1871 void CodeBlock::expressionRangeForBytecodeOffset(unsigned bytecodeOffset, int& d a/Source/JavaScriptCore/bytecode/CodeBlock.cpp_sec1
1865
    line += ownerExecutable()->firstLine();
1865
    line += ownerExecutable()->firstLine();
1866
}
1866
}
1867
1867
1868
bool CodeBlock::hasOpDebugForLineAndColumn(unsigned line, unsigned column)
1868
bool CodeBlock::hasOpDebugForLineAndColumn(unsigned line, Optional<unsigned> column)
1869
{
1869
{
1870
    const InstructionStream& instructionStream = instructions();
1870
    const InstructionStream& instructionStream = instructions();
1871
    for (const auto& it : instructionStream) {
1871
    for (const auto& it : instructionStream) {
Lines 1874-1880 bool CodeBlock::hasOpDebugForLineAndColumn(unsigned line, unsigned column) a/Source/JavaScriptCore/bytecode/CodeBlock.cpp_sec2
1874
            unsigned opDebugLine;
1874
            unsigned opDebugLine;
1875
            unsigned opDebugColumn;
1875
            unsigned opDebugColumn;
1876
            expressionRangeForBytecodeOffset(it.offset(), unused, unused, unused, opDebugLine, opDebugColumn);
1876
            expressionRangeForBytecodeOffset(it.offset(), unused, unused, unused, opDebugLine, opDebugColumn);
1877
            if (line == opDebugLine && (column == Breakpoint::unspecifiedColumn || column == opDebugColumn))
1877
            if (line == opDebugLine && (!column.hasValue() || column == opDebugColumn))
1878
                return true;
1878
                return true;
1879
        }
1879
        }
1880
    }
1880
    }
- a/Source/JavaScriptCore/bytecode/CodeBlock.h -1 / +1 lines
Lines 787-793 public: a/Source/JavaScriptCore/bytecode/CodeBlock.h_sec1
787
    unsigned frameRegisterCount();
787
    unsigned frameRegisterCount();
788
    int stackPointerOffset();
788
    int stackPointerOffset();
789
789
790
    bool hasOpDebugForLineAndColumn(unsigned line, unsigned column);
790
    bool hasOpDebugForLineAndColumn(unsigned line, Optional<unsigned> column);
791
791
792
    bool hasDebuggerRequests() const { return m_debuggerRequests; }
792
    bool hasDebuggerRequests() const { return m_debuggerRequests; }
793
    void* debuggerRequestsAddress() { return &m_debuggerRequests; }
793
    void* debuggerRequestsAddress() { return &m_debuggerRequests; }
- a/Source/JavaScriptCore/debugger/Breakpoint.h -2 lines
Lines 57-64 struct Breakpoint : public DoublyLinkedListNode<Breakpoint> { a/Source/JavaScriptCore/debugger/Breakpoint.h_sec1
57
    unsigned hitCount { 0 };
57
    unsigned hitCount { 0 };
58
    bool resolved { false };
58
    bool resolved { false };
59
59
60
    static constexpr unsigned unspecifiedColumn = UINT_MAX;
61
62
private:
60
private:
63
    Breakpoint* m_prev;
61
    Breakpoint* m_prev;
64
    Breakpoint* m_next;
62
    Breakpoint* m_next;
- a/Source/JavaScriptCore/debugger/Debugger.cpp -17 / +16 lines
Lines 268-276 void Debugger::toggleBreakpoint(CodeBlock* codeBlock, Breakpoint& breakpoint, Br a/Source/JavaScriptCore/debugger/Debugger.cpp_sec1
268
    if (breakpoint.sourceID != sourceID)
268
    if (breakpoint.sourceID != sourceID)
269
        return;
269
        return;
270
270
271
    unsigned line = breakpoint.line;
272
    unsigned column = breakpoint.column;
273
274
    unsigned startLine = executable->firstLine();
271
    unsigned startLine = executable->firstLine();
275
    unsigned startColumn = executable->startColumn();
272
    unsigned startColumn = executable->startColumn();
276
    unsigned endLine = executable->lastLine();
273
    unsigned endLine = executable->lastLine();
Lines 278-289 void Debugger::toggleBreakpoint(CodeBlock* codeBlock, Breakpoint& breakpoint, Br a/Source/JavaScriptCore/debugger/Debugger.cpp_sec2
278
275
279
    // Inspector breakpoint line and column values are zero-based but the executable
276
    // Inspector breakpoint line and column values are zero-based but the executable
280
    // and CodeBlock line and column values are one-based.
277
    // and CodeBlock line and column values are one-based.
281
    line += 1;
278
    unsigned line = breakpoint.line + 1;
282
    column = column ? column + 1 : Breakpoint::unspecifiedColumn;
279
    Optional<unsigned> column;
280
    if (breakpoint.column)
281
        column = breakpoint.column + 1;
283
282
284
    if (line < startLine || line > endLine)
283
    if (line < startLine || line > endLine)
285
        return;
284
        return;
286
    if (column != Breakpoint::unspecifiedColumn) {
285
    if (column.hasValue()) {
287
        if (line == startLine && column < startColumn)
286
        if (line == startLine && column < startColumn)
288
            return;
287
            return;
289
        if (line == endLine && column > endColumn)
288
        if (line == endLine && column > endColumn)
Lines 359-393 void Debugger::resolveBreakpoint(Breakpoint& breakpoint, SourceProvider* sourceP a/Source/JavaScriptCore/debugger/Debugger.cpp_sec3
359
358
360
    // FIXME: <https://webkit.org/b/162771> Web Inspector: Adopt TextPosition in Inspector to avoid oneBasedInt/zeroBasedInt ambiguity
359
    // 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
360
    // Inspector breakpoint line and column values are zero-based but the executable
362
    // and CodeBlock line and column values are one-based.
361
    // and CodeBlock line values are one-based while column is zero-based.
363
    unsigned line = breakpoint.line + 1;
362
    int line = breakpoint.line + 1;
364
    unsigned column = breakpoint.column ? breakpoint.column : Breakpoint::unspecifiedColumn;
363
    int column = breakpoint.column;
365
364
366
    // Account for a <script>'s start position on the first line only.
365
    // 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.
366
    int 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.
367
    int providerStartColumn = sourceProvider->startPosition().m_column.zeroBasedInt(); // Zero based so column zero is zero.
369
    if (line == providerStartLine && column != Breakpoint::unspecifiedColumn) {
368
    if (line == providerStartLine && breakpoint.column) {
370
        ASSERT(providerStartColumn <= column);
369
        ASSERT(providerStartColumn <= column);
371
        if (providerStartColumn)
370
        if (providerStartColumn)
372
            column -= providerStartColumn;
371
            column -= providerStartColumn;
373
    }
372
    }
374
373
375
    DebuggerParseData& parseData = debuggerParseData(breakpoint.sourceID, sourceProvider);
374
    DebuggerParseData& parseData = debuggerParseData(breakpoint.sourceID, sourceProvider);
376
    Optional<JSTextPosition> resolvedPosition = parseData.pausePositions.breakpointLocationForLineColumn((int)line, (int)column);
375
    Optional<JSTextPosition> resolvedPosition = parseData.pausePositions.breakpointLocationForLineColumn(line, column);
377
    if (!resolvedPosition)
376
    if (!resolvedPosition)
378
        return;
377
        return;
379
378
380
    unsigned resolvedLine = resolvedPosition->line;
379
    int resolvedLine = resolvedPosition->line;
381
    unsigned resolvedColumn = resolvedPosition->offset - resolvedPosition->lineStartOffset + 1;
380
    int resolvedColumn = resolvedPosition->offset - resolvedPosition->lineStartOffset;
382
381
383
    // Re-account for a <script>'s start position on the first line only.
382
    // Re-account for a <script>'s start position on the first line only.
384
    if (resolvedLine == providerStartLine && column != Breakpoint::unspecifiedColumn) {
383
    if (resolvedLine == providerStartLine && breakpoint.column) {
385
        if (providerStartColumn)
384
        if (providerStartColumn)
386
            resolvedColumn += providerStartColumn;
385
            resolvedColumn += providerStartColumn;
387
    }
386
    }
388
387
389
    breakpoint.line = resolvedLine - 1;
388
    breakpoint.line = resolvedLine - 1;
390
    breakpoint.column = resolvedColumn - 1;
389
    breakpoint.column = resolvedColumn;
391
    breakpoint.resolved = true;
390
    breakpoint.resolved = true;
392
}
391
}
393
392
- a/Source/JavaScriptCore/debugger/DebuggerParseData.cpp -37 / +22 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;
45
    if (it == m_positions.end())
46
            continue;
46
        return WTF::nullopt;
47
        }
48
        if (line > pauseLine) {
49
            start = middle + 1;
50
            continue;
51
        }
52
53
        if (column == pauseColumn) {
54
            // Found an exact position match. Roll forward if this was a function Entry.
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
47
63
        if (column < pauseColumn)
48
    if (line == it->position.line && column == it->position.column()) {
64
            end = middle;
49
        // Found an exact position match. Roll forward if this was a function Entry.
65
        else
50
        // We are guaranteed to have a Leave for an Entry so we don't need to bounds check.
66
            start = middle + 1;
51
        while (it->type == DebuggerPausePositionType::Enter)
52
            ++it;
53
        return Optional<JSTextPosition>(it->position);
67
    }
54
    }
68
55
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
56
    // 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
57
    // 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:
58
    // 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.
69
    // If the input was line 3, go into the function to pause on line 4.
87
70
88
    // Valid pause location. Use it.
71
    // Valid pause location. Use it.
89
    DebuggerPausePosition& firstSlidePosition = m_positions[start];
72
    DebuggerPausePosition& firstSlidePosition = *it++;
90
    if (firstSlidePosition.type != DebuggerPausePositionType::Enter)
73
    if (firstSlidePosition.type != DebuggerPausePositionType::Enter)
91
        return Optional<JSTextPosition>(firstSlidePosition.position);
74
        return Optional<JSTextPosition>(firstSlidePosition.position);
92
75
Lines 94-101 Optional<JSTextPosition> DebuggerPausePositions::breakpointLocationForLineColumn a/Source/JavaScriptCore/debugger/DebuggerParseData.cpp_sec3
94
    // If entryStackSize is > 0 we are skipping functions.
77
    // If entryStackSize is > 0 we are skipping functions.
95
    bool shouldEnterFunction = firstSlidePosition.position.line == line;
78
    bool shouldEnterFunction = firstSlidePosition.position.line == line;
96
    int entryStackSize = shouldEnterFunction ? 0 : 1;
79
    int entryStackSize = shouldEnterFunction ? 0 : 1;
97
    for (unsigned i = start + 1; i < m_positions.size(); ++i) {
80
    for (; it != m_positions.end(); ++it) {
98
        DebuggerPausePosition& slidePosition = m_positions[i];
81
        auto& slidePosition = *it;
99
        ASSERT(entryStackSize >= 0);
82
        ASSERT(entryStackSize >= 0);
100
83
101
        // Already skipping functions.
84
        // Already skipping functions.
Lines 124-129 Optional<JSTextPosition> DebuggerPausePositions::breakpointLocationForLineColumn a/Source/JavaScriptCore/debugger/DebuggerParseData.cpp_sec4
124
void DebuggerPausePositions::sort()
107
void DebuggerPausePositions::sort()
125
{
108
{
126
    std::sort(m_positions.begin(), m_positions.end(), [] (const DebuggerPausePosition& a, const DebuggerPausePosition& b) {
109
    std::sort(m_positions.begin(), m_positions.end(), [] (const DebuggerPausePosition& a, const DebuggerPausePosition& b) {
110
        if (a.position.offset == b.position.offset)
111
            return a.type < b.type;
127
        return a.position.offset < b.position.offset;
112
        return a.position.offset < b.position.offset;
128
    });
113
    });
129
}
114
}
- 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_hasScheduledTask)
103
            return;
104
        m_hasScheduledTask = true;
105
        RunLoop::current().dispatch([this, protectedThis = makeRef(*this)] {
106
            m_hasScheduledTask = 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_hasScheduledTask { 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