OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/memory/ref_counted_memory.h" | 6 #include "base/memory/ref_counted_memory.h" |
7 #include "base/utf_string_conversions.h" | 7 #include "base/utf_string_conversions.h" |
8 #include "chrome/browser/ui/webui/chrome_web_ui_data_source.h" | 8 #include "chrome/browser/ui/webui/chrome_web_ui_data_source.h" |
9 #include "grit/generated_resources.h" | 9 #include "grit/generated_resources.h" |
10 #include "grit/webui_resources.h" | 10 #include "grit/webui_resources.h" |
11 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
12 | 12 |
13 class MockChromeWebUIDataSource : public ChromeWebUIDataSource { | 13 class ChromeWebUIDataSourceTest : public testing::Test { |
14 public: | 14 public: |
15 MockChromeWebUIDataSource() | 15 ChromeWebUIDataSourceTest() : result_data_(NULL) {} |
16 : ChromeWebUIDataSource("host"), | 16 virtual ~ChromeWebUIDataSourceTest() {} |
17 result_data_(NULL) { | 17 ChromeWebUIDataSource* source() { return source_.get(); } |
18 } | |
19 | 18 |
20 void StartDataRequest(const std::string& path) { | 19 void StartDataRequest(const std::string& path) { |
21 ChromeWebUIDataSource::StartDataRequest( | 20 source_->StartDataRequest( |
22 path, | 21 path, |
23 false, | 22 false, |
24 base::Bind(&MockChromeWebUIDataSource::SendResult, this)); | 23 base::Bind(&ChromeWebUIDataSourceTest::SendResult, |
| 24 base::Unretained(this))); |
25 } | 25 } |
26 | 26 |
27 std::string GetMimeType(const std::string& path) const { | 27 std::string GetMimeType(const std::string& path) const { |
28 return ChromeWebUIDataSource::GetMimeType(path); | 28 return source_->GetMimeType(path); |
29 } | 29 } |
30 | 30 |
31 scoped_refptr<base::RefCountedMemory> result_data_; | 31 scoped_refptr<base::RefCountedMemory> result_data_; |
32 | 32 |
33 private: | 33 private: |
| 34 virtual void SetUp() { |
| 35 content::WebUIDataSource* source = ChromeWebUIDataSource::Create("host"); |
| 36 ChromeWebUIDataSource* source_impl = static_cast<ChromeWebUIDataSource*>( |
| 37 source); |
| 38 source_ = make_scoped_refptr(source_impl); |
| 39 } |
| 40 |
| 41 virtual void TearDown() { |
| 42 } |
| 43 |
34 // Store response for later comparisons. | 44 // Store response for later comparisons. |
35 void SendResult(base::RefCountedMemory* data) { | 45 void SendResult(base::RefCountedMemory* data) { |
36 result_data_ = data; | 46 result_data_ = data; |
37 } | 47 } |
38 | 48 |
39 virtual ~MockChromeWebUIDataSource() {} | 49 scoped_refptr<ChromeWebUIDataSource> source_; |
40 }; | |
41 | |
42 class ChromeWebUIDataSourceTest : public testing::Test { | |
43 public: | |
44 ChromeWebUIDataSourceTest() {} | |
45 virtual ~ChromeWebUIDataSourceTest() {} | |
46 MockChromeWebUIDataSource* source() { return source_.get(); } | |
47 | |
48 private: | |
49 virtual void SetUp() { | |
50 source_ = make_scoped_refptr(new MockChromeWebUIDataSource()); | |
51 } | |
52 | |
53 virtual void TearDown() { | |
54 } | |
55 | |
56 scoped_refptr<MockChromeWebUIDataSource> source_; | |
57 }; | 50 }; |
58 | 51 |
59 TEST_F(ChromeWebUIDataSourceTest, EmptyStrings) { | 52 TEST_F(ChromeWebUIDataSourceTest, EmptyStrings) { |
60 source()->SetJsonPath("strings.js"); | 53 source()->SetJsonPath("strings.js"); |
61 source()->StartDataRequest("strings.js"); | 54 StartDataRequest("strings.js"); |
62 std::string result(reinterpret_cast<const char*>( | 55 std::string result(reinterpret_cast<const char*>( |
63 source()->result_data_->front()), source()->result_data_->size()); | 56 result_data_->front()), result_data_->size()); |
64 EXPECT_NE(result.find("var templateData = {"), std::string::npos); | 57 EXPECT_NE(result.find("var templateData = {"), std::string::npos); |
65 EXPECT_NE(result.find("};"), std::string::npos); | 58 EXPECT_NE(result.find("};"), std::string::npos); |
66 } | 59 } |
67 | 60 |
68 TEST_F(ChromeWebUIDataSourceTest, SomeStrings) { | 61 TEST_F(ChromeWebUIDataSourceTest, SomeStrings) { |
69 source()->SetJsonPath("strings.js"); | 62 source()->SetJsonPath("strings.js"); |
70 source()->AddString("planet", ASCIIToUTF16("pluto")); | 63 source()->AddString("planet", ASCIIToUTF16("pluto")); |
71 source()->AddLocalizedString("button", IDS_OK); | 64 source()->AddLocalizedString("button", IDS_OK); |
72 source()->StartDataRequest("strings.js"); | 65 StartDataRequest("strings.js"); |
73 std::string result(reinterpret_cast<const char*>( | 66 std::string result(reinterpret_cast<const char*>( |
74 source()->result_data_->front()), source()->result_data_->size()); | 67 result_data_->front()), result_data_->size()); |
75 EXPECT_NE(result.find("\"planet\":\"pluto\""), std::string::npos); | 68 EXPECT_NE(result.find("\"planet\":\"pluto\""), std::string::npos); |
76 EXPECT_NE(result.find("\"button\":\"OK\""), std::string::npos); | 69 EXPECT_NE(result.find("\"button\":\"OK\""), std::string::npos); |
77 } | 70 } |
78 | 71 |
79 TEST_F(ChromeWebUIDataSourceTest, DefaultResource) { | 72 TEST_F(ChromeWebUIDataSourceTest, DefaultResource) { |
80 source()->SetDefaultResource(IDR_WEBUI_I18N_PROCESS_JS); | 73 source()->SetDefaultResource(IDR_WEBUI_I18N_PROCESS_JS); |
81 source()->StartDataRequest("foobar" ); | 74 StartDataRequest("foobar" ); |
82 std::string result( | 75 std::string result( |
83 reinterpret_cast<const char*>(source()->result_data_->front()), | 76 reinterpret_cast<const char*>(result_data_->front()), |
84 source()->result_data_->size()); | 77 result_data_->size()); |
85 EXPECT_NE(result.find("i18nTemplate.process"), std::string::npos); | 78 EXPECT_NE(result.find("i18nTemplate.process"), std::string::npos); |
86 source()->StartDataRequest("strings.js"); | 79 StartDataRequest("strings.js"); |
87 result = std::string( | 80 result = std::string( |
88 reinterpret_cast<const char*>(source()->result_data_->front()), | 81 reinterpret_cast<const char*>(result_data_->front()), |
89 source()->result_data_->size()); | 82 result_data_->size()); |
90 EXPECT_NE(result.find("i18nTemplate.process"), std::string::npos); | 83 EXPECT_NE(result.find("i18nTemplate.process"), std::string::npos); |
91 } | 84 } |
92 | 85 |
93 TEST_F(ChromeWebUIDataSourceTest, NamedResource) { | 86 TEST_F(ChromeWebUIDataSourceTest, NamedResource) { |
94 source()->SetDefaultResource(IDR_WEBUI_I18N_PROCESS_JS); | 87 source()->SetDefaultResource(IDR_WEBUI_I18N_PROCESS_JS); |
95 source()->AddResourcePath("foobar", IDR_WEBUI_I18N_TEMPLATE_JS); | 88 source()->AddResourcePath("foobar", IDR_WEBUI_I18N_TEMPLATE_JS); |
96 source()->StartDataRequest("foobar"); | 89 StartDataRequest("foobar"); |
97 std::string result( | 90 std::string result( |
98 reinterpret_cast<const char*>(source()->result_data_->front()), | 91 reinterpret_cast<const char*>(result_data_->front()), |
99 source()->result_data_->size()); | 92 result_data_->size()); |
100 EXPECT_NE(result.find("var i18nTemplate"), std::string::npos); | 93 EXPECT_NE(result.find("var i18nTemplate"), std::string::npos); |
101 source()->StartDataRequest("strings.js"); | 94 StartDataRequest("strings.js"); |
102 result = std::string( | 95 result = std::string( |
103 reinterpret_cast<const char*>(source()->result_data_->front()), | 96 reinterpret_cast<const char*>(result_data_->front()), |
104 source()->result_data_->size()); | 97 result_data_->size()); |
105 EXPECT_NE(result.find("i18nTemplate.process"), std::string::npos); | 98 EXPECT_NE(result.find("i18nTemplate.process"), std::string::npos); |
106 } | 99 } |
107 | 100 |
108 TEST_F(ChromeWebUIDataSourceTest, MimeType) { | 101 TEST_F(ChromeWebUIDataSourceTest, MimeType) { |
109 const char* html = "text/html"; | 102 const char* html = "text/html"; |
110 const char* js = "application/javascript"; | 103 const char* js = "application/javascript"; |
111 EXPECT_EQ(source()->GetMimeType(""), html); | 104 EXPECT_EQ(GetMimeType(""), html); |
112 EXPECT_EQ(source()->GetMimeType("foo"), html); | 105 EXPECT_EQ(GetMimeType("foo"), html); |
113 EXPECT_EQ(source()->GetMimeType("foo.html"), html); | 106 EXPECT_EQ(GetMimeType("foo.html"), html); |
114 EXPECT_EQ(source()->GetMimeType(".js"), js); | 107 EXPECT_EQ(GetMimeType(".js"), js); |
115 EXPECT_EQ(source()->GetMimeType("foo.js"), js); | 108 EXPECT_EQ(GetMimeType("foo.js"), js); |
116 EXPECT_EQ(source()->GetMimeType("js"), html); | 109 EXPECT_EQ(GetMimeType("js"), html); |
117 EXPECT_EQ(source()->GetMimeType("foojs"), html); | 110 EXPECT_EQ(GetMimeType("foojs"), html); |
118 EXPECT_EQ(source()->GetMimeType("foo.jsp"), html); | 111 EXPECT_EQ(GetMimeType("foo.jsp"), html); |
119 } | 112 } |
OLD | NEW |