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

Unified Diff: extensions/browser/api/display_source/display_source_apitest.cc

Issue 1410093008: Introduce chrome.displaySource API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments from Antony Created 5 years, 1 month 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: 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

Powered by Google App Engine
This is Rietveld 408576698