Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(328)

Side by Side Diff: extensions/browser/extension_error_unittest.cc

Issue 23007021: Report Javascript Runtime Errors to the Error Console (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@dc_ec_feldman
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "extensions/browser/extension_error.h"
6
7 #include "base/logging.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "base/strings/string16.h"
10 #include "base/strings/utf_string_conversions.h"
11 #include "extensions/common/constants.h"
12 #include "extensions/common/id_util.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14
15 using base::string16;
16 using base::UTF8ToUTF16;
17
18 namespace extensions {
19
20 namespace {
21
22 void AssertStackFrameValid(const std::string& text,
23 size_t line,
24 size_t column,
25 const std::string& url,
26 const std::string& function) {
27 string16 utf16_text = UTF8ToUTF16(text);
28 scoped_ptr<JavascriptRuntimeError::StackFrame> frame =
29 JavascriptRuntimeError::StackFrame::CreateFromText(utf16_text);
30
31 ASSERT_TRUE(frame.get()) << "Failed to create frame from '" << text << "'";
32 EXPECT_EQ(line, frame->line_number);
33 EXPECT_EQ(column, frame->column_number);
34 EXPECT_EQ(UTF8ToUTF16(url), frame->url);
35 EXPECT_EQ(UTF8ToUTF16(function), frame->function);
36 }
37
38 void AssertStackFrameInvalid(const std::string& text) {
39 string16 utf16_text = UTF8ToUTF16(text);
40 scoped_ptr<JavascriptRuntimeError::StackFrame> frame =
41 JavascriptRuntimeError::StackFrame::CreateFromText(utf16_text);
42 ASSERT_FALSE(frame.get()) << "Errantly created frame from '" << text << "'";
43 }
44
45 }
46
47 TEST(ExtensionErrorUnitTest, ParseStackFrames) {
48 AssertStackFrameValid(
49 "function_name (https://www.url.com/foo.html:100:201)",
50 100u, 201u, "https://www.url.com/foo.html", "function_name");
51 AssertStackFrameValid(
52 "(anonymous function) (https://www.url.com/foo.html:100:201)",
53 100u, 201u, "https://www.url.com/foo.html", "(anonymous function)");
54 AssertStackFrameValid(
55 "Function.target.(anonymous function) (extensions::SafeBuiltins:19:14)",
56 19u, 14u, "extensions::SafeBuiltins",
57 "Function.target.(anonymous function)");
58 AssertStackFrameValid(
59 "chrome-extension://fpgohbggpmcpeedljibghijiclejiklo/script.js:6:12",
60 6u, 12u, "chrome-extension://fpgohbggpmcpeedljibghijiclejiklo/script.js",
61 "(anonymous function)");
62
63 // No delimiting ':' between line/column numbers.
64 AssertStackFrameInvalid(
65 "function_name (https://www.url.com/foo.html:100201)");
66 // No line number.
67 AssertStackFrameInvalid("function_name (https://www.url.com/foo.html::201)");
68 // No line number or delimiting ':'.
69 AssertStackFrameInvalid("function_name (https://www.url.com/foo.html201)");
70 // No leading '(' around url, line, column.
71 AssertStackFrameInvalid(
72 "function_name https://www.url.com/foo.html:100:201)");
73 // No trailing ')'.
74 AssertStackFrameInvalid(
75 "function_name (https://www.url.com/foo.html:100:201");
76 // Trailing ' '.
77 AssertStackFrameInvalid(
78 "function_name (https://www.url.com/foo.html:100:201) ");
79 // Invalid column number.
80 AssertStackFrameInvalid(
81 "function_name (https://www.url.com/foo.html:100:201a)");
82 // Negative column number.
83 AssertStackFrameInvalid(
84 "function_name (https://www.url.com/foo.html:100:-201)");
85 // Extra trailing ')'
86 AssertStackFrameInvalid(
87 "function_name (https://www.url.com/foo.html:100:201))");
88 }
89
90 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698