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

Side by Side Diff: chrome/browser/extensions/api/socket/tcp_socket_unittest.cc

Issue 10919201: Make sure that a given app/extension requests only its own resources. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 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 "chrome/browser/extensions/api/socket/tcp_socket.h" 5 #include "chrome/browser/extensions/api/socket/tcp_socket.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "chrome/browser/extensions/api/api_resource_event_notifier.h" 8 #include "chrome/browser/extensions/api/api_resource_event_notifier.h"
9 #include "net/base/address_list.h" 9 #include "net/base/address_list.h"
10 #include "net/base/completion_callback.h" 10 #include "net/base/completion_callback.h"
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 }; 66 };
67 67
68 68
69 TEST(SocketTest, TestTCPSocketRead) { 69 TEST(SocketTest, TestTCPSocketRead) {
70 net::AddressList address_list; 70 net::AddressList address_list;
71 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); 71 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list);
72 ApiResourceEventNotifier* notifier = new MockApiResourceEventNotifier(); 72 ApiResourceEventNotifier* notifier = new MockApiResourceEventNotifier();
73 CompleteHandler handler; 73 CompleteHandler handler;
74 74
75 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( 75 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting(
76 tcp_client_socket, notifier)); 76 tcp_client_socket, "fake_id", notifier));
Mihai Parparita -not on Chrome 2012/09/11 07:18:19 Extension IDs are always 20 characters long, other
77 77
78 EXPECT_CALL(*tcp_client_socket, Read(_, _, _)) 78 EXPECT_CALL(*tcp_client_socket, Read(_, _, _))
79 .Times(1); 79 .Times(1);
80 EXPECT_CALL(handler, OnReadComplete(_, _)) 80 EXPECT_CALL(handler, OnReadComplete(_, _))
81 .Times(1); 81 .Times(1);
82 82
83 const int count = 512; 83 const int count = 512;
84 socket->Read(count, base::Bind(&CompleteHandler::OnReadComplete, 84 socket->Read(count, base::Bind(&CompleteHandler::OnReadComplete,
85 base::Unretained(&handler))); 85 base::Unretained(&handler)));
86 } 86 }
87 87
88 TEST(SocketTest, TestTCPSocketWrite) { 88 TEST(SocketTest, TestTCPSocketWrite) {
89 net::AddressList address_list; 89 net::AddressList address_list;
90 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); 90 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list);
91 ApiResourceEventNotifier* notifier = new MockApiResourceEventNotifier(); 91 ApiResourceEventNotifier* notifier = new MockApiResourceEventNotifier();
92 CompleteHandler handler; 92 CompleteHandler handler;
93 93
94 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( 94 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting(
95 tcp_client_socket, notifier)); 95 tcp_client_socket, "fake_id", notifier));
96 96
97 net::CompletionCallback callback; 97 net::CompletionCallback callback;
98 EXPECT_CALL(*tcp_client_socket, Write(_, _, _)) 98 EXPECT_CALL(*tcp_client_socket, Write(_, _, _))
99 .Times(2) 99 .Times(2)
100 .WillRepeatedly(testing::DoAll(SaveArg<2>(&callback), 100 .WillRepeatedly(testing::DoAll(SaveArg<2>(&callback),
101 Return(128))); 101 Return(128)));
102 EXPECT_CALL(handler, OnComplete(_)) 102 EXPECT_CALL(handler, OnComplete(_))
103 .Times(1); 103 .Times(1);
104 104
105 scoped_refptr<net::IOBufferWithSize> io_buffer( 105 scoped_refptr<net::IOBufferWithSize> io_buffer(
106 new net::IOBufferWithSize(256)); 106 new net::IOBufferWithSize(256));
107 socket->Write(io_buffer.get(), io_buffer->size(), 107 socket->Write(io_buffer.get(), io_buffer->size(),
108 base::Bind(&CompleteHandler::OnComplete, base::Unretained(&handler))); 108 base::Bind(&CompleteHandler::OnComplete, base::Unretained(&handler)));
109 } 109 }
110 110
111 TEST(SocketTest, TestTCPSocketBlockedWrite) { 111 TEST(SocketTest, TestTCPSocketBlockedWrite) {
112 net::AddressList address_list; 112 net::AddressList address_list;
113 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); 113 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list);
114 MockApiResourceEventNotifier* notifier = new MockApiResourceEventNotifier(); 114 MockApiResourceEventNotifier* notifier = new MockApiResourceEventNotifier();
115 CompleteHandler handler; 115 CompleteHandler handler;
116 116
117 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( 117 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting(
118 tcp_client_socket, notifier)); 118 tcp_client_socket, "fake_id", notifier));
119 119
120 net::CompletionCallback callback; 120 net::CompletionCallback callback;
121 EXPECT_CALL(*tcp_client_socket, Write(_, _, _)) 121 EXPECT_CALL(*tcp_client_socket, Write(_, _, _))
122 .Times(2) 122 .Times(2)
123 .WillRepeatedly(testing::DoAll(SaveArg<2>(&callback), 123 .WillRepeatedly(testing::DoAll(SaveArg<2>(&callback),
124 Return(net::ERR_IO_PENDING))); 124 Return(net::ERR_IO_PENDING)));
125 scoped_refptr<net::IOBufferWithSize> io_buffer(new net::IOBufferWithSize(42)); 125 scoped_refptr<net::IOBufferWithSize> io_buffer(new net::IOBufferWithSize(42));
126 socket->Write(io_buffer.get(), io_buffer->size(), 126 socket->Write(io_buffer.get(), io_buffer->size(),
127 base::Bind(&CompleteHandler::OnComplete, base::Unretained(&handler))); 127 base::Bind(&CompleteHandler::OnComplete, base::Unretained(&handler)));
128 128
129 // Good. Original call came back unable to complete. Now pretend the socket 129 // Good. Original call came back unable to complete. Now pretend the socket
130 // finished, and confirm that we passed the error back. 130 // finished, and confirm that we passed the error back.
131 EXPECT_CALL(handler, OnComplete(42)) 131 EXPECT_CALL(handler, OnComplete(42))
132 .Times(1); 132 .Times(1);
133 callback.Run(40); 133 callback.Run(40);
134 callback.Run(2); 134 callback.Run(2);
135 } 135 }
136 136
137 TEST(SocketTest, TestTCPSocketBlockedWriteReentry) { 137 TEST(SocketTest, TestTCPSocketBlockedWriteReentry) {
138 net::AddressList address_list; 138 net::AddressList address_list;
139 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); 139 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list);
140 MockApiResourceEventNotifier* notifier = new MockApiResourceEventNotifier(); 140 MockApiResourceEventNotifier* notifier = new MockApiResourceEventNotifier();
141 CompleteHandler handlers[5]; 141 CompleteHandler handlers[5];
142 142
143 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( 143 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting(
144 tcp_client_socket, notifier)); 144 tcp_client_socket, "fake_id", notifier));
145 145
146 net::CompletionCallback callback; 146 net::CompletionCallback callback;
147 EXPECT_CALL(*tcp_client_socket, Write(_, _, _)) 147 EXPECT_CALL(*tcp_client_socket, Write(_, _, _))
148 .Times(5) 148 .Times(5)
149 .WillRepeatedly(testing::DoAll(SaveArg<2>(&callback), 149 .WillRepeatedly(testing::DoAll(SaveArg<2>(&callback),
150 Return(net::ERR_IO_PENDING))); 150 Return(net::ERR_IO_PENDING)));
151 scoped_refptr<net::IOBufferWithSize> io_buffers[5]; 151 scoped_refptr<net::IOBufferWithSize> io_buffers[5];
152 int i; 152 int i;
153 for (i = 0; i < 5; i++) { 153 for (i = 0; i < 5; i++) {
154 io_buffers[i] = new net::IOBufferWithSize(128 + i * 50); 154 io_buffers[i] = new net::IOBufferWithSize(128 + i * 50);
(...skipping 11 matching lines...) Expand all
166 callback.Run(128 + i * 50); 166 callback.Run(128 + i * 50);
167 } 167 }
168 } 168 }
169 169
170 TEST(SocketTest, TestTCPSocketSetNoDelay) { 170 TEST(SocketTest, TestTCPSocketSetNoDelay) {
171 net::AddressList address_list; 171 net::AddressList address_list;
172 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); 172 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list);
173 MockApiResourceEventNotifier* notifier = new MockApiResourceEventNotifier(); 173 MockApiResourceEventNotifier* notifier = new MockApiResourceEventNotifier();
174 174
175 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( 175 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting(
176 tcp_client_socket, notifier)); 176 tcp_client_socket, "fake_id", notifier));
177 177
178 bool no_delay = false; 178 bool no_delay = false;
179 EXPECT_CALL(*tcp_client_socket, SetNoDelay(_)) 179 EXPECT_CALL(*tcp_client_socket, SetNoDelay(_))
180 .WillOnce(testing::DoAll(SaveArg<0>(&no_delay), Return(true))); 180 .WillOnce(testing::DoAll(SaveArg<0>(&no_delay), Return(true)));
181 int result = socket->SetNoDelay(true); 181 int result = socket->SetNoDelay(true);
182 EXPECT_TRUE(result); 182 EXPECT_TRUE(result);
183 EXPECT_TRUE(no_delay); 183 EXPECT_TRUE(no_delay);
184 184
185 EXPECT_CALL(*tcp_client_socket, SetNoDelay(_)) 185 EXPECT_CALL(*tcp_client_socket, SetNoDelay(_))
186 .WillOnce(testing::DoAll(SaveArg<0>(&no_delay), Return(false))); 186 .WillOnce(testing::DoAll(SaveArg<0>(&no_delay), Return(false)));
187 187
188 result = socket->SetNoDelay(false); 188 result = socket->SetNoDelay(false);
189 EXPECT_FALSE(result); 189 EXPECT_FALSE(result);
190 EXPECT_FALSE(no_delay); 190 EXPECT_FALSE(no_delay);
191 } 191 }
192 192
193 TEST(SocketTest, TestTCPSocketSetKeepAlive) { 193 TEST(SocketTest, TestTCPSocketSetKeepAlive) {
194 net::AddressList address_list; 194 net::AddressList address_list;
195 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); 195 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list);
196 MockApiResourceEventNotifier* notifier = new MockApiResourceEventNotifier(); 196 MockApiResourceEventNotifier* notifier = new MockApiResourceEventNotifier();
197 197
198 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( 198 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting(
199 tcp_client_socket, notifier)); 199 tcp_client_socket, "fake_id", notifier));
200 200
201 bool enable = false; 201 bool enable = false;
202 int delay = 0; 202 int delay = 0;
203 EXPECT_CALL(*tcp_client_socket, SetKeepAlive(_, _)) 203 EXPECT_CALL(*tcp_client_socket, SetKeepAlive(_, _))
204 .WillOnce(testing::DoAll(SaveArg<0>(&enable), 204 .WillOnce(testing::DoAll(SaveArg<0>(&enable),
205 SaveArg<1>(&delay), 205 SaveArg<1>(&delay),
206 Return(true))); 206 Return(true)));
207 int result = socket->SetKeepAlive(true, 4500); 207 int result = socket->SetKeepAlive(true, 4500);
208 EXPECT_TRUE(result); 208 EXPECT_TRUE(result);
209 EXPECT_TRUE(enable); 209 EXPECT_TRUE(enable);
210 EXPECT_EQ(4500, delay); 210 EXPECT_EQ(4500, delay);
211 211
212 EXPECT_CALL(*tcp_client_socket, SetKeepAlive(_, _)) 212 EXPECT_CALL(*tcp_client_socket, SetKeepAlive(_, _))
213 .WillOnce(testing::DoAll(SaveArg<0>(&enable), 213 .WillOnce(testing::DoAll(SaveArg<0>(&enable),
214 SaveArg<1>(&delay), 214 SaveArg<1>(&delay),
215 Return(false))); 215 Return(false)));
216 result = socket->SetKeepAlive(false, 0); 216 result = socket->SetKeepAlive(false, 0);
217 EXPECT_FALSE(result); 217 EXPECT_FALSE(result);
218 EXPECT_FALSE(enable); 218 EXPECT_FALSE(enable);
219 EXPECT_EQ(0, delay); 219 EXPECT_EQ(0, delay);
220 } 220 }
221 221
222 } // namespace extensions 222 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698