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

Side by Side Diff: chrome/browser/ui/webui/chrome_web_ui_data_source_unittest.cc

Issue 11881055: Simplify WebUI data sources. Currently WebUI data sources implement a URLDataSourceDelegate interfa… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix issue in about_ui exposed by cros tests Created 7 years, 11 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 | Annotate | Revision Log
OLDNEW
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/memory/ref_counted_memory.h" 6 #include "base/memory/ref_counted_memory.h"
6 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
7 #include "chrome/browser/ui/webui/chrome_web_ui_data_source.h" 8 #include "chrome/browser/ui/webui/chrome_web_ui_data_source.h"
8 #include "grit/common_resources.h" 9 #include "grit/common_resources.h"
9 #include "grit/generated_resources.h" 10 #include "grit/generated_resources.h"
10 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
11 12
12 // A mock data source (so we can override SendResponse to get at its data).
13 class MockChromeWebUIDataSource : public ChromeWebUIDataSource { 13 class MockChromeWebUIDataSource : public ChromeWebUIDataSource {
14 public: 14 public:
15 MockChromeWebUIDataSource() 15 MockChromeWebUIDataSource()
16 : ChromeWebUIDataSource("host"), 16 : ChromeWebUIDataSource("host"),
17 result_request_id_(-1),
18 result_data_(NULL) { 17 result_data_(NULL) {
19 } 18 }
20 19
21 // Subvert protected methods. 20 void StartDataRequest(const std::string& path) {
22 virtual void StartDataRequest( 21 ChromeWebUIDataSource::StartDataRequest(
23 const std::string& path, bool is_incognito, int request_id) OVERRIDE { 22 path,
24 ChromeWebUIDataSource::StartDataRequest(path, is_incognito, request_id); 23 false,
24 base::Bind(&MockChromeWebUIDataSource::SendResult, this));
25 } 25 }
26 26
27 virtual std::string GetMimeType(const std::string& path) const OVERRIDE { 27 std::string GetMimeType(const std::string& path) const {
28 return ChromeWebUIDataSource::GetMimeType(path); 28 return ChromeWebUIDataSource::GetMimeType(path);
29 } 29 }
30 30
31 scoped_refptr<base::RefCountedMemory> result_data_;
32
33 private:
31 // Store response for later comparisons. 34 // Store response for later comparisons.
32 virtual void SendResponse(int request_id, base::RefCountedMemory* data) { 35 void SendResult(base::RefCountedMemory* data) {
33 result_request_id_ = request_id;
34 result_data_ = data; 36 result_data_ = data;
35 } 37 }
36 38
37 int result_request_id_;
38 scoped_refptr<base::RefCountedMemory> result_data_;
39
40 private:
41 virtual ~MockChromeWebUIDataSource() {} 39 virtual ~MockChromeWebUIDataSource() {}
42 }; 40 };
43 41
44 class ChromeWebUIDataSourceTest : public testing::Test { 42 class ChromeWebUIDataSourceTest : public testing::Test {
45 public: 43 public:
46 ChromeWebUIDataSourceTest() {} 44 ChromeWebUIDataSourceTest() {}
47 virtual ~ChromeWebUIDataSourceTest() {} 45 virtual ~ChromeWebUIDataSourceTest() {}
48 MockChromeWebUIDataSource* source() { return source_.get(); } 46 MockChromeWebUIDataSource* source() { return source_.get(); }
49 47
50 private: 48 private:
51 virtual void SetUp() { 49 virtual void SetUp() {
52 source_ = make_scoped_refptr(new MockChromeWebUIDataSource()); 50 source_ = make_scoped_refptr(new MockChromeWebUIDataSource());
53 } 51 }
54 52
55 virtual void TearDown() { 53 virtual void TearDown() {
56 } 54 }
57 55
58 scoped_refptr<MockChromeWebUIDataSource> source_; 56 scoped_refptr<MockChromeWebUIDataSource> source_;
59 }; 57 };
60 58
61 TEST_F(ChromeWebUIDataSourceTest, EmptyStrings) { 59 TEST_F(ChromeWebUIDataSourceTest, EmptyStrings) {
62 source()->set_json_path("strings.js"); 60 source()->set_json_path("strings.js");
63 source()->StartDataRequest("strings.js" , false, 1); 61 source()->StartDataRequest("strings.js");
64 EXPECT_EQ(source()->result_request_id_, 1);
65 std::string result(reinterpret_cast<const char*>( 62 std::string result(reinterpret_cast<const char*>(
66 source()->result_data_->front()), source()->result_data_->size()); 63 source()->result_data_->front()), source()->result_data_->size());
67 EXPECT_NE(result.find("var templateData = {"), std::string::npos); 64 EXPECT_NE(result.find("var templateData = {"), std::string::npos);
68 EXPECT_NE(result.find("};"), std::string::npos); 65 EXPECT_NE(result.find("};"), std::string::npos);
69 } 66 }
70 67
71 TEST_F(ChromeWebUIDataSourceTest, SomeStrings) { 68 TEST_F(ChromeWebUIDataSourceTest, SomeStrings) {
72 source()->set_json_path("strings.js"); 69 source()->set_json_path("strings.js");
73 source()->AddString("planet", ASCIIToUTF16("pluto")); 70 source()->AddString("planet", ASCIIToUTF16("pluto"));
74 source()->AddLocalizedString("button", IDS_OK); 71 source()->AddLocalizedString("button", IDS_OK);
75 source()->StartDataRequest("strings.js" , false, 2); 72 source()->StartDataRequest("strings.js");
76 EXPECT_EQ(source()->result_request_id_, 2);
77 std::string result(reinterpret_cast<const char*>( 73 std::string result(reinterpret_cast<const char*>(
78 source()->result_data_->front()), source()->result_data_->size()); 74 source()->result_data_->front()), source()->result_data_->size());
79 EXPECT_NE(result.find("\"planet\":\"pluto\""), std::string::npos); 75 EXPECT_NE(result.find("\"planet\":\"pluto\""), std::string::npos);
80 EXPECT_NE(result.find("\"button\":\"OK\""), std::string::npos); 76 EXPECT_NE(result.find("\"button\":\"OK\""), std::string::npos);
81 } 77 }
82 78
83 TEST_F(ChromeWebUIDataSourceTest, DefaultResource) { 79 TEST_F(ChromeWebUIDataSourceTest, DefaultResource) {
84 source()->set_default_resource(IDR_I18N_PROCESS_JS); 80 source()->set_default_resource(IDR_I18N_PROCESS_JS);
85 source()->StartDataRequest("foobar" , false, 3); 81 source()->StartDataRequest("foobar" );
86 EXPECT_EQ(source()->result_request_id_, 3);
87 std::string result( 82 std::string result(
88 reinterpret_cast<const char*>(source()->result_data_->front()), 83 reinterpret_cast<const char*>(source()->result_data_->front()),
89 source()->result_data_->size()); 84 source()->result_data_->size());
90 EXPECT_NE(result.find("i18nTemplate.process"), std::string::npos); 85 EXPECT_NE(result.find("i18nTemplate.process"), std::string::npos);
91 source()->StartDataRequest("strings.js" , false, 4); 86 source()->StartDataRequest("strings.js");
92 EXPECT_EQ(source()->result_request_id_, 4);
93 result = std::string( 87 result = std::string(
94 reinterpret_cast<const char*>(source()->result_data_->front()), 88 reinterpret_cast<const char*>(source()->result_data_->front()),
95 source()->result_data_->size()); 89 source()->result_data_->size());
96 EXPECT_NE(result.find("i18nTemplate.process"), std::string::npos); 90 EXPECT_NE(result.find("i18nTemplate.process"), std::string::npos);
97 } 91 }
98 92
99 TEST_F(ChromeWebUIDataSourceTest, NamedResource) { 93 TEST_F(ChromeWebUIDataSourceTest, NamedResource) {
100 source()->set_default_resource(IDR_I18N_PROCESS_JS); 94 source()->set_default_resource(IDR_I18N_PROCESS_JS);
101 source()->add_resource_path("foobar", IDR_I18N_TEMPLATE_JS); 95 source()->add_resource_path("foobar", IDR_I18N_TEMPLATE_JS);
102 source()->StartDataRequest("foobar" , false, 5); 96 source()->StartDataRequest("foobar");
103 EXPECT_EQ(source()->result_request_id_, 5);
104 std::string result( 97 std::string result(
105 reinterpret_cast<const char*>(source()->result_data_->front()), 98 reinterpret_cast<const char*>(source()->result_data_->front()),
106 source()->result_data_->size()); 99 source()->result_data_->size());
107 EXPECT_NE(result.find("var i18nTemplate"), std::string::npos); 100 EXPECT_NE(result.find("var i18nTemplate"), std::string::npos);
108 source()->StartDataRequest("strings.js" , false, 4); 101 source()->StartDataRequest("strings.js");
109 EXPECT_EQ(source()->result_request_id_, 4);
110 result = std::string( 102 result = std::string(
111 reinterpret_cast<const char*>(source()->result_data_->front()), 103 reinterpret_cast<const char*>(source()->result_data_->front()),
112 source()->result_data_->size()); 104 source()->result_data_->size());
113 EXPECT_NE(result.find("i18nTemplate.process"), std::string::npos); 105 EXPECT_NE(result.find("i18nTemplate.process"), std::string::npos);
114 } 106 }
115 107
116 TEST_F(ChromeWebUIDataSourceTest, MimeType) { 108 TEST_F(ChromeWebUIDataSourceTest, MimeType) {
117 const char* html = "text/html"; 109 const char* html = "text/html";
118 const char* js = "application/javascript"; 110 const char* js = "application/javascript";
119 EXPECT_EQ(source()->GetMimeType(""), html); 111 EXPECT_EQ(source()->GetMimeType(""), html);
120 EXPECT_EQ(source()->GetMimeType("foo"), html); 112 EXPECT_EQ(source()->GetMimeType("foo"), html);
121 EXPECT_EQ(source()->GetMimeType("foo.html"), html); 113 EXPECT_EQ(source()->GetMimeType("foo.html"), html);
122 EXPECT_EQ(source()->GetMimeType(".js"), js); 114 EXPECT_EQ(source()->GetMimeType(".js"), js);
123 EXPECT_EQ(source()->GetMimeType("foo.js"), js); 115 EXPECT_EQ(source()->GetMimeType("foo.js"), js);
124 EXPECT_EQ(source()->GetMimeType("js"), html); 116 EXPECT_EQ(source()->GetMimeType("js"), html);
125 EXPECT_EQ(source()->GetMimeType("foojs"), html); 117 EXPECT_EQ(source()->GetMimeType("foojs"), html);
126 EXPECT_EQ(source()->GetMimeType("foo.jsp"), html); 118 EXPECT_EQ(source()->GetMimeType("foo.jsp"), html);
127 } 119 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698