• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
13 using extensions::PageCaptureSaveAsMHTMLFunction;
14 
15 class ExtensionPageCaptureApiTest : public ExtensionApiTest {
16  public:
SetUpCommandLine(CommandLine * command_line)17   virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
18     ExtensionApiTest::SetUpCommandLine(command_line);
19     command_line->AppendSwitchASCII(switches::kJavaScriptFlags, "--expose-gc");
20   }
21 };
22 
23 class PageCaptureSaveAsMHTMLDelegate
24     : public PageCaptureSaveAsMHTMLFunction::TestDelegate {
25  public:
PageCaptureSaveAsMHTMLDelegate()26   PageCaptureSaveAsMHTMLDelegate() {
27     PageCaptureSaveAsMHTMLFunction::SetTestDelegate(this);
28   }
29 
~PageCaptureSaveAsMHTMLDelegate()30   virtual ~PageCaptureSaveAsMHTMLDelegate() {
31     PageCaptureSaveAsMHTMLFunction::SetTestDelegate(NULL);
32   }
33 
OnTemporaryFileCreated(const base::FilePath & temp_file)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 
IN_PROC_BROWSER_TEST_F(ExtensionPageCaptureApiTest,SaveAsMHTML)42 IN_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