| 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..9c44868a568695f757b0bf7790303a5df4c8f8da
|
| --- /dev/null
|
| +++ b/extensions/browser/api/display_source/display_source_apitest.cc
|
| @@ -0,0 +1,99 @@
|
| +// 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 {
|
| +
|
| +using api::display_source::SinkInfo;
|
| +using api::display_source::SinkState;
|
| +using api::display_source::SINK_STATE_DISCONNECTED;
|
| +using api::display_source::AUTHENTICATION_METHOD_PBC;
|
| +
|
| +namespace {
|
| +
|
| +DisplaySourceSinkInfoPtr CreateSinkInfoPtr(int id,
|
| + const std::string& name,
|
| + SinkState state) {
|
| + DisplaySourceSinkInfoPtr ptr(new SinkInfo());
|
| + ptr->id = id;
|
| + ptr->name = name;
|
| + ptr->state = state;
|
| +
|
| + return ptr;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +class MockDisplaySourceConnectionDelegate
|
| + : public DisplaySourceConnectionDelegate {
|
| + public:
|
| + DisplaySourceSinkInfoList 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", SINK_STATE_DISCONNECTED));
|
| + sinks_callback.Run(sinks_);
|
| + }
|
| +
|
| + void RequestAuthentication(int sink_id,
|
| + const AuthInfoCallback& auth_info_callback,
|
| + const FailureCallback& failure_callback) override {
|
| + DisplaySourceAuthInfo info;
|
| + info.method = AUTHENTICATION_METHOD_PBC;
|
| + auth_info_callback.Run(info);
|
| + }
|
| +
|
| + void Connect(int sink_id,
|
| + const DisplaySourceAuthInfo& 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", SINK_STATE_DISCONNECTED));
|
| + }
|
| +
|
| + void StopWatchingSinks() override {}
|
| +
|
| + private:
|
| + void AddSink(DisplaySourceSinkInfoPtr sink) {
|
| + sinks_.push_back(sink);
|
| + FOR_EACH_OBSERVER(DisplaySourceConnectionDelegate::Observer, observers_,
|
| + OnSinksUpdated(sinks_));
|
| + }
|
| +
|
| + DisplaySourceSinkInfoList 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
|
|
|