blob: da34df87d06fe2a4a98474297a2f2342e89b4d9a [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(async function() {
TestRunner.addResult(`Tests that console logging dumps proxy properly.\n`);
await TestRunner.loadModule('console_test_runner');
await TestRunner.showPanel('console');
await TestRunner.evaluateInPagePromise(`
window.accessedGet = false;
function testFunction()
{
let proxied = new Proxy({ boo: 42 }, {
get: function (target, name, receiver) {
window.accessedGet = true;
return target[name];
},
set: function(target, name, value, receiver) {
target[name] = value;
return value;
}
});
proxied.foo = 43;
console.log(proxied);
let proxied2 = new Proxy(proxied, {});
console.log(proxied2);
}
`);
ConsoleTestRunner.waitUntilNthMessageReceived(2, dumpMessages);
TestRunner.evaluateInPage('testFunction()');
async function dumpMessages() {
var consoleView = Console.ConsoleView.instance();
consoleView._viewport.invalidate();
var element = consoleView._visibleViewMessages[0].contentElement();
await ConsoleTestRunner.dumpConsoleMessages();
TestRunner.evaluateInPage('window.accessedGet', dumpAccessedGetAndExpand);
}
function dumpAccessedGetAndExpand(result) {
TestRunner.addResult('window.accessedGet = ' + result);
ConsoleTestRunner.expandConsoleMessages(dumpExpandedConsoleMessages);
}
async function dumpExpandedConsoleMessages() {
var element = Console.ConsoleView.instance()._visibleViewMessages[0].contentElement();
dumpNoteVisible(element, 'info-note');
await ConsoleTestRunner.dumpConsoleMessages();
TestRunner.evaluateInPage('window.accessedGet', dumpAccessedGetAndCompleteTest);
}
function dumpAccessedGetAndCompleteTest(result) {
TestRunner.addResult('window.accessedGet = ' + result);
TestRunner.completeTest();
}
function dumpNoteVisible(element, name) {
var note = window.getComputedStyle(element.querySelector('.object-state-note.' + name)).display;
TestRunner.addResult(name + ' display: ' + note);
}
})();