| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "google_apis/gcm/engine/fake_connection_factory.h" |
| |
| #include "google_apis/gcm/engine/fake_connection_handler.h" |
| #include "google_apis/gcm/protocol/mcs.pb.h" |
| #include "mojo/public/cpp/system/data_pipe.h" |
| #include "net/socket/stream_socket.h" |
| #include "net/traffic_annotation/network_traffic_annotation_test_helper.h" |
| |
| namespace gcm { |
| |
| FakeConnectionFactory::FakeConnectionFactory() |
| : reconnect_pending_(false), |
| delay_reconnect_(false), |
| connection_listener_(nullptr) { |
| } |
| |
| FakeConnectionFactory::~FakeConnectionFactory() { |
| } |
| |
| void FakeConnectionFactory::Initialize( |
| const BuildLoginRequestCallback& request_builder, |
| const ConnectionHandler::ProtoReceivedCallback& read_callback, |
| const ConnectionHandler::ProtoSentCallback& write_callback) { |
| request_builder_ = request_builder; |
| connection_handler_.reset(new FakeConnectionHandler(read_callback, |
| write_callback)); |
| } |
| |
| ConnectionHandler* FakeConnectionFactory::GetConnectionHandler() const { |
| return connection_handler_.get(); |
| } |
| |
| void FakeConnectionFactory::Connect() { |
| mcs_proto::LoginRequest login_request; |
| request_builder_.Run(&login_request); |
| connection_handler_->Init(login_request, mojo::ScopedDataPipeConsumerHandle(), |
| mojo::ScopedDataPipeProducerHandle()); |
| } |
| |
| bool FakeConnectionFactory::IsEndpointReachable() const { |
| return connection_handler_.get() && connection_handler_->CanSendMessage(); |
| } |
| |
| std::string FakeConnectionFactory::GetConnectionStateString() const { |
| return ""; |
| } |
| |
| base::TimeTicks FakeConnectionFactory::NextRetryAttempt() const { |
| return base::TimeTicks(); |
| } |
| |
| void FakeConnectionFactory::SignalConnectionReset( |
| ConnectionResetReason reason) { |
| if (!delay_reconnect_) |
| Connect(); |
| else |
| reconnect_pending_ = true; |
| if (connection_listener_) |
| connection_listener_->OnDisconnected(); |
| } |
| |
| void FakeConnectionFactory::SetConnectionListener( |
| ConnectionListener* listener) { |
| connection_listener_ = listener; |
| } |
| |
| } // namespace gcm |