Index: chrome/browser/extensions/api/log_private/log_private_apitest_chromeos.cc |
diff --git a/chrome/browser/extensions/api/log_private/log_private_apitest_chromeos.cc b/chrome/browser/extensions/api/log_private/log_private_apitest_chromeos.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e5c44e45159a6faf2fafe2f21ce62b4ad863f856 |
--- /dev/null |
+++ b/chrome/browser/extensions/api/log_private/log_private_apitest_chromeos.cc |
@@ -0,0 +1,92 @@ |
+// Copyright 2013 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 <string> |
+ |
+#include "chrome/browser/extensions/extension_apitest.h" |
+#include "chrome/common/chrome_switches.h" |
+#include "chromeos/dbus/fake_dbus_thread_manager.h" |
+#include "chromeos/dbus/fake_debug_daemon_client.h" |
+#include "content/public/browser/browser_thread.h" |
+#include "extensions/common/extension_builder.h" |
+#include "net/dns/mock_host_resolver.h" |
+#include "net/test/embedded_test_server/embedded_test_server.h" |
+#include "net/test/embedded_test_server/http_request.h" |
+#include "net/test/embedded_test_server/http_response.h" |
+ |
+using net::test_server::BasicHttpResponse; |
+using net::test_server::HttpResponse; |
+using net::test_server::HttpRequest; |
+ |
+namespace { |
+ |
+const char kFileData[] = "log file content"; |
+ |
+class TestDebugDaemonClient : public chromeos::FakeDebugDaemonClient { |
+ public: |
+ TestDebugDaemonClient() { |
+ } |
+ |
+ virtual ~TestDebugDaemonClient() { |
+ } |
+ |
+ virtual void GetDebugLogs(base::File file, |
+ const GetDebugLogsCallback& callback) OVERRIDE { |
+ base::File* file_param = new base::File(file.Pass()); |
+ content::BrowserThread::PostBlockingPoolTaskAndReply( |
+ FROM_HERE, |
+ base::Bind(&GenerateTestLogDumpFile, base::Owned(file_param)), |
+ base::Bind(callback, true)); |
+ } |
+ |
+ static void GenerateTestLogDumpFile(base::File* file) { |
+ const std::string write_data(kFileData); |
+ const int data_size = static_cast<int>(write_data.size()); |
+ EXPECT_EQ(data_size, file->Write(0, write_data.c_str(), data_size)); |
+ EXPECT_TRUE(file->SetLength(data_size)); |
+ file->Close(); |
+ } |
+}; |
+ |
+} // namespace |
+ |
+namespace extensions { |
+ |
+class LogPrivateApiTest : public ExtensionApiTest { |
+ public: |
+ LogPrivateApiTest() : fake_debug_daemon_client_(NULL) {} |
+ |
+ virtual ~LogPrivateApiTest() { |
+ } |
+ |
+ virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { |
+ chromeos::FakeDBusThreadManager* fake_dbus_thread_manager = |
+ new chromeos::FakeDBusThreadManager; |
+ fake_dbus_thread_manager->SetFakeClients(); |
+ fake_debug_daemon_client_ = new TestDebugDaemonClient; |
+ fake_dbus_thread_manager->SetDebugDaemonClient( |
+ scoped_ptr<chromeos::DebugDaemonClient>(fake_debug_daemon_client_)); |
+ chromeos::DBusThreadManager::SetInstanceForTesting( |
+ fake_dbus_thread_manager); |
+ ExtensionApiTest::SetUpInProcessBrowserTestFixture(); |
+ } |
+ |
+ scoped_ptr<HttpResponse> HandleRequest(const HttpRequest& request) { |
+ scoped_ptr<BasicHttpResponse> response(new BasicHttpResponse); |
+ response->set_code(net::HTTP_OK); |
+ response->set_content("<html><head><title>LogPrivateTest</title>" |
+ "</head><body>Hello World</body></html>"); |
+ return response.PassAs<HttpResponse>(); |
+ } |
+ |
+ private: |
+ TestDebugDaemonClient* fake_debug_daemon_client_; |
+}; |
+ |
+IN_PROC_BROWSER_TEST_F(LogPrivateApiTest, DumpSystemLogs) { |
+ ASSERT_TRUE(RunExtensionTest("log_private/dump_logs")); |
+} |
+ |
+} // namespace extensions |
+ |