Index: extensions/browser/api/display_source/display_source_apitest.cc |
diff --git a/extensions/browser/api/display_source/display_source_apitest.cc b/extensions/browser/api/display_source/display_source_apitest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..aae4fed3609e0eda59292f0320c1781acb129a8a |
--- /dev/null |
+++ b/extensions/browser/api/display_source/display_source_apitest.cc |
@@ -0,0 +1,96 @@ |
+// 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. |
+ |
+#include "base/memory/scoped_ptr.h" |
+#include "content/public/test/test_utils.h" |
+#include "extensions/browser/api/display_source/display_source_connection_delegate.h" |
+#include "extensions/browser/api/display_source/display_source_connection_delegate_factory.h" |
+#include "extensions/shell/test/shell_apitest.h" |
+ |
+namespace extensions { |
+ |
+namespace { |
+ |
+SinkInfoPtr CreateSinkInfoPtr( |
+ int id, |
+ const std::string& name, |
+ api::display_source::SinkState state = |
Reilly Grant (use Gerrit)
2015/11/10 18:51:34
The style guide generally recommends against defau
Mikhail
2015/11/11 13:36:04
Done.
|
+ api::display_source::SINK_STATE_DISCONNECTED) { |
+ SinkInfoPtr ptr(new api::display_source::SinkInfo()); |
+ ptr->id = id; |
+ ptr->name = name; |
+ ptr->state = state; |
+ |
+ return ptr; |
+} |
+ |
+} // namespace |
+ |
+class MockDisplaySourceConnectionDelegate |
+ : public DisplaySourceConnectionDelegate { |
+ public: |
+ SinkInfoList last_found_sinks() const override { return sinks_; } |
+ const Connection* connection() const override { return nullptr; } |
+ void GetAvailableSinks(const SinkInfoListCallback& sinks_callback, |
+ const FailureCallback& failure_callback) override { |
+ AddSink(CreateSinkInfoPtr(1, "sink 1")); |
+ sinks_callback.Run(sinks_); |
+ } |
+ |
+ void RequestAuthentication(int sink_id, |
+ const AuthInfoCallback& auth_info_callback, |
+ const FailureCallback& failure_callback) override { |
+ AuthInfo info; |
+ info.method = "pbc"; |
+ auth_info_callback.Run(info); |
+ } |
+ |
+ void Connect(int sink_id, |
+ const AuthInfo& auth_info, |
+ const base::Closure& connected_callback, |
+ const FailureCallback& failure_callback) override {} |
+ |
+ void Disconnect(const base::Closure& disconnected_callback, |
+ const FailureCallback& failure_callback) override {} |
+ |
+ void StartWatchingSinks() override { |
+ AddSink(CreateSinkInfoPtr(2, "sink 2")); |
+ } |
+ |
+ void StopWatchingSinks() override {} |
+ |
+ private: |
+ void AddSink(SinkInfoPtr sink) { |
+ sinks_.push_back(sink); |
+ FOR_EACH_OBSERVER(DisplaySourceConnectionDelegate::Observer, observers_, |
+ OnSinksUpdated(sinks_)); |
+ } |
+ |
+ SinkInfoList sinks_; |
+}; |
+ |
+class DisplaySourceApiTest : public ShellApiTest { |
+ public: |
+ DisplaySourceApiTest() = default; |
+ |
+ private: |
+ static scoped_ptr<KeyedService> CreateMockDelegate( |
+ content::BrowserContext* profile) { |
+ return make_scoped_ptr<KeyedService>( |
+ new MockDisplaySourceConnectionDelegate()); |
+ } |
+ |
+ void SetUpOnMainThread() override { |
+ ShellApiTest::SetUpOnMainThread(); |
+ DisplaySourceConnectionDelegateFactory::GetInstance()->SetTestingFactory( |
+ browser_context(), &CreateMockDelegate); |
+ content::RunAllPendingInMessageLoop(); |
+ } |
+}; |
+ |
+IN_PROC_BROWSER_TEST_F(DisplaySourceApiTest, DisplaySourceExtension) { |
+ ASSERT_TRUE(RunAppTest("api_test/display_source/api")) << message_; |
+} |
+ |
+} // namespace extensions |