1868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// found in the LICENSE file. 4868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 5868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include <string> 6868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "chrome/browser/extensions/activity_log/activity_log.h" 8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "chrome/browser/extensions/extension_apitest.h" 9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "chrome/common/chrome_switches.h" 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/extension_builder.h" 117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "net/dns/mock_host_resolver.h" 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "net/test/embedded_test_server/embedded_test_server.h" 134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "net/test/embedded_test_server/http_request.h" 144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "net/test/embedded_test_server/http_response.h" 154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)using net::test_server::BasicHttpResponse; 174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)using net::test_server::HttpResponse; 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)using net::test_server::HttpRequest; 19868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 20868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)namespace extensions { 21868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 22868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class ActivityLogApiTest : public ExtensionApiTest { 23868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) public: 24868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ActivityLogApiTest() : saved_cmdline_(CommandLine::NO_PROGRAM) {} 25868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 26868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual ~ActivityLogApiTest() { 27868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ExtensionApiTest::SetUpCommandLine(&saved_cmdline_); 28868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) *CommandLine::ForCurrentProcess() = saved_cmdline_; 29868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 30868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 31868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 32868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ExtensionApiTest::SetUpCommandLine(command_line); 33868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) saved_cmdline_ = *CommandLine::ForCurrentProcess(); 34868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) command_line->AppendSwitch(switches::kEnableExtensionActivityLogging); 35868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 36868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) scoped_ptr<HttpResponse> HandleRequest(const HttpRequest& request) { 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) scoped_ptr<BasicHttpResponse> response(new BasicHttpResponse); 394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) response->set_code(net::HTTP_OK); 404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) response->set_content("<html><head><title>ActivityLogTest</title>" 414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) "</head><body>Hello World</body></html>"); 424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return response.PassAs<HttpResponse>(); 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 45868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) private: 46868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) CommandLine saved_cmdline_; 47868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}; 48868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_WIN) && !defined(NDEBUG) 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// TODO(pmarch): fix flakiness on win debug - crbug.com/299393 517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#define MAYBE_TriggerEvent DISABLED_TriggerEvent 527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#else 53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define MAYBE_TriggerEvent TriggerEvent 547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif 557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 56868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// The test extension sends a message to its 'friend'. The test completes 57868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// if it successfully sees the 'friend' receive the message. 587dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochIN_PROC_BROWSER_TEST_F(ActivityLogApiTest, MAYBE_TriggerEvent) { 590529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch ActivityLog::GetInstance(profile())->SetWatchdogAppActiveForTesting(true); 604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch host_resolver()->AddRule("*", "127.0.0.1"); 624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(StartEmbeddedTestServer()); 634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) embedded_test_server()->RegisterRequestHandler( 644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base::Bind(&ActivityLogApiTest::HandleRequest, base::Unretained(this))); 654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const Extension* friend_extension = LoadExtensionIncognito( 677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch test_data_dir_.AppendASCII("activity_log_private/friend")); 68868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_TRUE(friend_extension); 69868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_TRUE(RunExtensionTest("activity_log_private/test")); 700529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch ActivityLog::GetInstance(profile())->SetWatchdogAppActiveForTesting(false); 71868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 72868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 73868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} // namespace extensions 74868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 75