Chromium Code Reviews| 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 |