| Index: net/socket_stream/socket_stream_unittest.cc | 
| =================================================================== | 
| --- net/socket_stream/socket_stream_unittest.cc	(revision 207753) | 
| +++ net/socket_stream/socket_stream_unittest.cc	(working copy) | 
| @@ -924,4 +924,66 @@ | 
| EXPECT_EQ(OK, test_callback.WaitForResult()); | 
| } | 
|  | 
| +// A test for the WeakPtr workaround patch which should be deleted | 
| +// in the future. | 
| +TEST_F(SocketStreamTest, ContextDestroyedBeforeDoBeforeConnect) { | 
| +  TestCompletionCallback test_callback; | 
| + | 
| +  scoped_ptr<SocketStreamEventRecorder> delegate( | 
| +      new SocketStreamEventRecorder(test_callback.callback())); | 
| + | 
| +  scoped_ptr<TestURLRequestContext> context(new TestURLRequestContext); | 
| +  TestSocketStreamNetworkDelegate network_delegate; | 
| +  network_delegate.SetBeforeConnectResult(OK); | 
| +  context->set_network_delegate(&network_delegate); | 
| + | 
| +  scoped_refptr<SocketStream> socket_stream( | 
| +      new SocketStream(GURL("ws://example.com/demo"), delegate.get())); | 
| + | 
| +  socket_stream->set_context(context.get()); | 
| + | 
| +  socket_stream->Connect(); | 
| +  context.reset(); | 
| + | 
| +  ASSERT_EQ(0U, delegate->GetSeenEvents().size()); | 
| + | 
| +  test_callback.WaitForResult(); | 
| + | 
| +  const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); | 
| +  ASSERT_EQ(1U, events.size()); | 
| + | 
| +  EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[0].event_type); | 
| +} | 
| + | 
| +// A test for the WeakPtr workaround patch which should be deleted | 
| +// in the future. | 
| +TEST_F(SocketStreamTest, SocketStreamResetBeforeDoBeforeConnect) { | 
| +  TestCompletionCallback test_callback; | 
| + | 
| +  scoped_ptr<SocketStreamEventRecorder> delegate( | 
| +      new SocketStreamEventRecorder(test_callback.callback())); | 
| + | 
| +  scoped_ptr<TestURLRequestContext> context(new TestURLRequestContext); | 
| +  TestSocketStreamNetworkDelegate network_delegate; | 
| +  network_delegate.SetBeforeConnectResult(OK); | 
| +  context->set_network_delegate(&network_delegate); | 
| + | 
| +  scoped_refptr<SocketStream> socket_stream( | 
| +      new SocketStream(GURL("ws://example.com/demo"), delegate.get())); | 
| + | 
| +  socket_stream->set_context(context.get()); | 
| + | 
| +  socket_stream->Connect(); | 
| +  socket_stream = NULL; | 
| +  context.reset(); | 
| + | 
| +  ASSERT_EQ(0U, delegate->GetSeenEvents().size()); | 
| +  test_callback.WaitForResult(); | 
| + | 
| +  const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); | 
| +  ASSERT_EQ(1U, events.size()); | 
| + | 
| +  EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[0].event_type); | 
| +} | 
| + | 
| }  // namespace net | 
|  |