1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "base/base_switches.h" 6#include "base/command_line.h" 7#include "chrome/browser/extensions/api/page_capture/page_capture_api.h" 8#include "chrome/browser/extensions/extension_apitest.h" 9#include "chrome/common/chrome_switches.h" 10#include "chrome/test/base/ui_test_utils.h" 11#include "net/dns/mock_host_resolver.h" 12 13using extensions::PageCaptureSaveAsMHTMLFunction; 14 15class ExtensionPageCaptureApiTest : public ExtensionApiTest { 16 public: 17 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 18 ExtensionApiTest::SetUpCommandLine(command_line); 19 command_line->AppendSwitchASCII(switches::kJavaScriptFlags, "--expose-gc"); 20 } 21}; 22 23class PageCaptureSaveAsMHTMLDelegate 24 : public PageCaptureSaveAsMHTMLFunction::TestDelegate { 25 public: 26 PageCaptureSaveAsMHTMLDelegate() { 27 PageCaptureSaveAsMHTMLFunction::SetTestDelegate(this); 28 } 29 30 virtual ~PageCaptureSaveAsMHTMLDelegate() { 31 PageCaptureSaveAsMHTMLFunction::SetTestDelegate(NULL); 32 } 33 34 virtual void OnTemporaryFileCreated( 35 const base::FilePath& temp_file) OVERRIDE { 36 temp_file_ = temp_file; 37 } 38 39 base::FilePath temp_file_; 40}; 41 42IN_PROC_BROWSER_TEST_F(ExtensionPageCaptureApiTest, SaveAsMHTML) { 43 host_resolver()->AddRule("www.a.com", "127.0.0.1"); 44 ASSERT_TRUE(StartEmbeddedTestServer()); 45 PageCaptureSaveAsMHTMLDelegate delegate; 46 ASSERT_TRUE(RunExtensionTest("page_capture")) << message_; 47 ASSERT_FALSE(delegate.temp_file_.empty()); 48 // Flush the message loops to make sure the delete happens. 49 content::RunAllPendingInMessageLoop(content::BrowserThread::FILE); 50 content::RunAllPendingInMessageLoop(content::BrowserThread::IO); 51 ASSERT_FALSE(base::PathExists(delegate.temp_file_)); 52} 53