blob: d5e24ad5e6d16495798e5b954ed5e298b8e4092c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
// Copyright 2008, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
// Copyright (c) 2009 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 "chrome/test/ui/npapi_test_helper.h"
#include "base/file_util.h"
#include "base/test/test_file_util.h"
#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_switches.h"
#if defined(OS_WIN)
static const char kNpapiTestPluginName[] = "npapi_test_plugin.dll";
#elif defined(OS_MACOSX)
static const char kNpapiTestPluginName[] = "npapi_test_plugin.plugin";
static const char kLayoutPluginName[] = "TestNetscapePlugIn.plugin";
#elif defined(OS_LINUX)
static const char kNpapiTestPluginName[] = "libnpapi_test_plugin.so";
#endif
namespace npapi_test {
const char kTestCompleteCookie[] = "status";
const char kTestCompleteSuccess[] = "OK";
} // namespace npapi_test.
NPAPITesterBase::NPAPITesterBase(const std::string& test_plugin_name)
: test_plugin_name_(test_plugin_name) {
}
void NPAPITesterBase::SetUp() {
// We need to copy our test-plugin into the plugins directory so that
// the browser can load it.
FilePath plugins_directory = GetPluginsDirectory();
FilePath plugin_src = browser_directory_.AppendASCII(test_plugin_name_);
ASSERT_TRUE(file_util::PathExists(plugin_src));
test_plugin_path_ = plugins_directory.AppendASCII(test_plugin_name_);
file_util::CreateDirectory(plugins_directory);
ASSERT_TRUE(file_util::CopyDirectory(plugin_src, test_plugin_path_, true))
<< "Copy failed from " << plugin_src.value()
<< " to " << test_plugin_path_.value();
UITest::SetUp();
}
void NPAPITesterBase::TearDown() {
// Tear down the UI test first so that the browser stops using the plugin
// files.
UITest::TearDown();
EXPECT_TRUE(file_util::DieFileDie(test_plugin_path_, true));
}
FilePath NPAPITesterBase::GetPluginsDirectory() {
#if defined(OS_MACOSX)
std::wstring plugin_subpath(chrome::kBrowserProcessExecutableName);
plugin_subpath.append(L".app/Contents/PlugIns");
FilePath plugins_directory = browser_directory_.Append(
FilePath::FromWStringHack(plugin_subpath));
#else
FilePath plugins_directory = browser_directory_.AppendASCII("plugins");
#endif
return plugins_directory;
}
NPAPITester::NPAPITester() : NPAPITesterBase(kNpapiTestPluginName) {
}
void NPAPITester::SetUp() {
#if defined(OS_MACOSX)
// On Windows and Linux, the layout plugin is copied into plugins/ as part of
// its build process; we can't do the equivalent on the Mac since Chromium
// doesn't exist during the Test Shell build.
FilePath layout_src = browser_directory_.AppendASCII(kLayoutPluginName);
ASSERT_TRUE(file_util::PathExists(layout_src));
FilePath plugins_directory = GetPluginsDirectory();
layout_plugin_path_ = plugins_directory.AppendASCII(kLayoutPluginName);
file_util::CreateDirectory(plugins_directory);
ASSERT_TRUE(file_util::CopyDirectory(layout_src, layout_plugin_path_, true));
#endif
NPAPITesterBase::SetUp();
}
void NPAPITester::TearDown() {
// Tear down the base class first so that the browser stops using the plugin
// files.
NPAPITesterBase::TearDown();
#if defined(OS_MACOSX)
EXPECT_TRUE(file_util::DieFileDie(layout_plugin_path_, true));
#endif // OS_MACOSX
}
// NPAPIVisiblePluginTester members.
void NPAPIVisiblePluginTester::SetUp() {
show_window_ = true;
NPAPITester::SetUp();
}
// NPAPIIncognitoTester members.
void NPAPIIncognitoTester::SetUp() {
launch_arguments_.AppendSwitch(switches::kIncognito);
NPAPITester::SetUp();
}
|