| Index: LayoutTests/dart/inspector/debugger-eval-on-call-frame.html
 | 
| diff --git a/LayoutTests/dart/inspector/debugger-eval-on-call-frame.html b/LayoutTests/dart/inspector/debugger-eval-on-call-frame.html
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..fe7c1b66efd649979327e3174c726bef8c4eca33
 | 
| --- /dev/null
 | 
| +++ b/LayoutTests/dart/inspector/debugger-eval-on-call-frame.html
 | 
| @@ -0,0 +1,116 @@
 | 
| +<html>
 | 
| +<script src="../../http/tests/inspector/inspector-test.js"></script>
 | 
| +<script src="../../http/tests/inspector/debugger-test.js"></script>
 | 
| +
 | 
| +<script type="application/dart" src="debugger-eval-on-call-frame.DART"></script>
 | 
| +
 | 
| +<script>
 | 
| +
 | 
| +function postMessageToDart()
 | 
| +{
 | 
| +    window.postMessage('fromJS', '*');
 | 
| +}
 | 
| +
 | 
| +function testFunction() {
 | 
| +    postMessageToDart();
 | 
| +}
 | 
| +
 | 
| +function test()
 | 
| +{
 | 
| +    var panel = WebInspector.inspectorView.showPanel("sources");
 | 
| +    InspectorTest.runDebuggerTestSuite([
 | 
| +        function testScopeChain(next)
 | 
| +        {
 | 
| +            // Intentionally end this script name with .DART instead of .dart
 | 
| +            // to verify that breakpoints set by url regex still are treated
 | 
| +            // as dart even if the regexp and script url do not end in .dart.
 | 
| +            InspectorTest.showScriptSource('debugger-eval-on-call-frame.DART', didShowScriptSource);
 | 
| +
 | 
| +            function didShowScriptSource(sourceFrame)
 | 
| +            {
 | 
| +                // Break within the body of the closure method.
 | 
| +                setBreakpointAndWaitUntilPaused('debugger-eval-on-call-frame.[dD][aA][rR][tT]', 36, didPauseInDart);
 | 
| +                InspectorTest.runTestFunction();
 | 
| +            }
 | 
| +
 | 
| +            function didPauseInDart(callFrames)
 | 
| +            {
 | 
| +                InspectorTest.captureStackTrace(callFrames);
 | 
| +
 | 
| +                function evaluate(expression)
 | 
| +                {
 | 
| +                    InspectorTest.evaluateInConsole(expression, didEvaluateInConsole);
 | 
| +                    function didEvaluateInConsole(result)
 | 
| +                    {
 | 
| +                        // For file urls we leave the file name and line #
 | 
| +                        // information in the url as these file urls are from
 | 
| +                        // the test files themselves so will not be broken by
 | 
| +                        // external changes.
 | 
| +                        result = result.replace(/\(file:[^.)]*(\/[^\/]*[.]dart[0-9:]*)\)/g,
 | 
| +                                                "(FILE_SOURCE_LOCATION$1)");
 | 
| +                        // For dart: urls we remove all file name and line #
 | 
| +                        // information as the tests shouldn't break when
 | 
| +                        // dart:core changes.
 | 
| +                        result = result.replace(/\(dart:[^)]*\)/g,
 | 
| +                                                "(DART_CORE_LIBRARY_SOURCE_LOCATION)");
 | 
| +                        InspectorTest.addResult(expression + " = " + result);
 | 
| +                        if (expressions.length)
 | 
| +                            evaluate(expressions.shift());
 | 
| +                        else
 | 
| +                            next();
 | 
| +                    }
 | 
| +                }
 | 
| +
 | 
| +                var expressions = [
 | 
| +                    'staticField',
 | 
| +                    'globalVar',
 | 
| +                    // Should fail as Test is not available in the scope of the
 | 
| +                    // executing closure.
 | 
| +                    'foo',
 | 
| +                    'z',
 | 
| +                    // Command line API
 | 
| +                    'inspect(document.documentElement).tagName',
 | 
| +                    'inspect(document.body).tagName',
 | 
| +                    'inspect(document.body.children.first).tagName',
 | 
| +                    '$0.toString()',
 | 
| +                    '$1.toString()',
 | 
| +                    '$2.toString()',
 | 
| +                    '$1 == document.body',
 | 
| +                    '$1 == document.body',
 | 
| +                    '$2 == document.documentElement',
 | 
| +                    // FIXME(jacobr): we had to remove this as it logs a
 | 
| +                    // message to the console with a line number in the
 | 
| +                    // release build.
 | 
| +                    // dir([1,2,3,4,5])',
 | 
| +                ];
 | 
| +                evaluate(expressions.shift());
 | 
| +            }
 | 
| +        },
 | 
| +    ]);
 | 
| +
 | 
| +    function setBreakpointAndWaitUntilPaused(urlRegex, lineNumber, pausedCallback)
 | 
| +    {
 | 
| +        var expectedBreakpointId;
 | 
| +        WebInspector.debuggerModel._agent.setBreakpointByUrl(lineNumber, undefined, urlRegex, 0, "", undefined, "dart", didSetBreakpointInDebugger);
 | 
| +
 | 
| +        function didSetBreakpointInDebugger(callback, breakpointId)
 | 
| +        {
 | 
| +            expectedBreakpointId = breakpointId;
 | 
| +            InspectorTest.waitUntilPaused(didPause);
 | 
| +        }
 | 
| +
 | 
| +        function didPause(callFrames, reason, breakpointIds)
 | 
| +        {
 | 
| +            InspectorTest.assertEquals(breakpointIds.length, 1);
 | 
| +            InspectorTest.assertEquals(breakpointIds[0], expectedBreakpointId);
 | 
| +            InspectorTest.assertEquals(reason, "other");
 | 
| +
 | 
| +            pausedCallback(callFrames);
 | 
| +        }
 | 
| +    }
 | 
| +};
 | 
| +</script>
 | 
| +
 | 
| +<body onload="runTest()">
 | 
| +</body>
 | 
| +</html>
 | 
| 
 |