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

Unified Diff: remoting/test/app_remoting_connected_client_tests.h

Issue 1008043003: Adding Test Fixture for initial test cases for the App Remoting Test Driver. Also includes the pub… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: remoting/test/app_remoting_connected_client_tests.h
diff --git a/remoting/test/app_remoting_connected_client_tests.h b/remoting/test/app_remoting_connected_client_tests.h
new file mode 100644
index 0000000000000000000000000000000000000000..c1fe03503a2c4d405663fd21ec66f66840f2ac51
--- /dev/null
+++ b/remoting/test/app_remoting_connected_client_tests.h
@@ -0,0 +1,111 @@
+// Copyright 2015 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.
+
+#ifndef REMOTING_TEST_APP_REMOTING_CONNECTED_CLIENT_TESTS_H_
+#define REMOTING_TEST_APP_REMOTING_CONNECTED_CLIENT_TESTS_H_
+
+#include <string>
+
+#include "base/callback_forward.h"
+#include "base/memory/scoped_ptr.h"
+#include "remoting/test/remote_connection_observer.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace base {
+class MessageLoopForIO;
+}
+
+namespace remoting {
+namespace test {
+
+struct ApplicationInfo;
+class TestChromotingClient;
+
+// Supplied by the test code to the fixture to allow for custom handling of
+// specific messages.
+typedef base::Callback<void(const protocol::ExtensionMessage& message)>
+ HostMessageReceivedCallback;
+
+// Creates a connection to a remote host when the static SetUpTestCase() method
Wez 2015/03/16 22:19:10 This comment should describe the overall intended
joedow 2015/03/18 20:13:09 Done.
+// is called. This connection is persisted until TearDownTestCase() is called.
+// This means that tests which use this fixture can rely on having a connection
Wez 2015/03/16 22:19:10 "This means that" is superfluous.
joedow 2015/03/18 20:13:09 Done.
+// available to them and do not need to create/manage it themselves.
+// The parameter that is used to instantiate a test using this fixture is the
+// name of the application we want to test.
Wez 2015/03/16 22:19:10 This sentence is pretty confusingly worded!
joedow 2015/03/18 20:13:09 My mastery of the English language changes dependi
+class AppRemotingConnectedClientTests
Wez 2015/03/16 22:19:09 Why is this class "*Tests" rather than "*Test"? Ea
joedow 2015/03/18 20:13:09 I've seen 'Tests' used for fixtures but it looks l
+ : public testing::TestWithParam<const char*>,
+ public RemoteConnectionObserver {
+ public:
+ AppRemotingConnectedClientTests();
+ ~AppRemotingConnectedClientTests() override;
+
+ // static testing::Test overrides.
Wez 2015/03/16 22:19:09 Since these are static, they are presumably overri
joedow 2015/03/18 20:13:09 Acknowledged.
+ static void SetUpTestCase();
+ static void TearDownTestCase();
+
+ protected:
+ bool connection_is_ready_for_tests() {
+ return connection_is_ready_for_tests_;
+ }
+
+ // Sends the request to the host and waits for a reply up to |max_wait_time|.
+ // Returns true if we received a response within the maximum time limit.
+ bool VerifyResponseForSimpleHostMessage(
+ const std::string& message_request_title,
+ const std::string& message_response_title,
+ const std::string& message_payload,
+ const base::TimeDelta& max_wait_time);
+
+ private:
+ // testing::Test interface.
+ void SetUp() override;
+ void TearDown() override;
+
+ // RemoteConnectionObserver interface.
+ void ConnectionStateChanged(protocol::ConnectionToHost::State state,
+ protocol::ErrorCode error_code) override;
+ void ConnectionReady(bool ready) override;
+ void HostMessageReceived(const protocol::ExtensionMessage& message) override;
+
+ // Starts a connection with the remote host defined by the parameter..
Wez 2015/03/16 22:19:09 typo: spurious .
joedow 2015/03/18 20:13:09 Done.
+ void StartConnection();
+
+ // Sends the final client details to the host in order to complete the
+ // connection.
+ void SendClientConnectionDetailsToHost();
+
+ // Runs |done_closure_| when an onWindowAdded message with |main_window_name|
+ // for the title is passed in.
Wez 2015/03/16 22:19:09 This comment is confusing since it doesn't relate
joedow 2015/03/18 20:13:09 Done.
+ void AddWindowMessageHandler(
+ const std::string& main_window_name,
+ const remoting::protocol::ExtensionMessage& message);
+
+ // Tracks the details for the application the tests are targeting.
+ const ApplicationInfo& application_info_;
+
+ // Used to signal when an action has been completed.
+ base::Closure done_closure_;
+
+ // Used to customize the message handling behavior between tests. Called when
+ // a host message is received.
+ HostMessageReceivedCallback host_message_received_callback_;
Wez 2015/03/16 22:19:09 It's not clear how tests can customize this, since
joedow 2015/03/18 20:13:09 Done.
+
+ // Tracks the state of the connection between tests. True when we have a
+ // chromoting connection to the remote host established and the main
+ // application window is visible.
+ static bool connection_is_ready_for_tests_;
+
+ // Used to post tasks by |client_| and tests.
+ static scoped_ptr<base::MessageLoopForIO> message_loop_;
+
+ // Creates and manages the connection to the remote host.
+ static scoped_ptr<TestChromotingClient> client_;
Wez 2015/03/16 22:19:09 Do we really want to re-use a connection across te
joedow 2015/03/18 20:13:09 I think I started out with a more complicated 'fir
+
+ DISALLOW_COPY_AND_ASSIGN(AppRemotingConnectedClientTests);
+};
+
+} // namespace test
+} // namespace remoting
+
+#endif // REMOTING_TEST_APP_REMOTING_CONNECTED_CLIENT_TESTS_H_

Powered by Google App Engine
This is Rietveld 408576698