diff options
author | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-21 10:27:18 +0000 |
---|---|---|
committer | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-21 10:27:18 +0000 |
commit | c7d58d6889f8c8c1a676593cae355326170522d0 (patch) | |
tree | 1dd70fb826fb4015321d767dc4bfc26dc1a59a8a /chrome/browser/plugin_data_remover_browsertest.cc | |
parent | 31c1959a53e1ae65660cf1284c46c8d944591c89 (diff) | |
download | chromium_src-c7d58d6889f8c8c1a676593cae355326170522d0.zip chromium_src-c7d58d6889f8c8c1a676593cae355326170522d0.tar.gz chromium_src-c7d58d6889f8c8c1a676593cae355326170522d0.tar.bz2 |
When clearing plugin data at shutdown, wait for it to finish.
Also, Add some browser tests for clearing plugin data and enable npapi_test_plugin on 64-bit Linux; apparently it's been fixed.
BUG=58235, 18337, 26625
TEST=PluginDataRemoverTest.*
Review URL: http://codereview.chromium.org/6308001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72123 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/plugin_data_remover_browsertest.cc')
-rw-r--r-- | chrome/browser/plugin_data_remover_browsertest.cc | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/chrome/browser/plugin_data_remover_browsertest.cc b/chrome/browser/plugin_data_remover_browsertest.cc new file mode 100644 index 0000000..3fbaf75 --- /dev/null +++ b/chrome/browser/plugin_data_remover_browsertest.cc @@ -0,0 +1,75 @@ +// Copyright (c) 2011 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/browser/plugin_data_remover.h" + +#include "base/command_line.h" +#include "base/path_service.h" +#include "base/synchronization/waitable_event_watcher.h" +#include "chrome/browser/ui/browser.h" +#include "chrome/browser/browser_process.h" +#include "chrome/browser/prefs/pref_service.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/common/chrome_paths.h" +#include "chrome/common/chrome_switches.h" +#include "chrome/common/pref_names.h" +#include "chrome/test/in_process_browser_test.h" +#include "chrome/test/ui_test_utils.h" + +namespace { +const char* kNPAPITestPluginMimeType = "application/vnd.npapi-test"; +} + +class PluginDataRemoverTest : public InProcessBrowserTest, + public base::WaitableEventWatcher::Delegate { + public: + PluginDataRemoverTest() : InProcessBrowserTest() { } + + virtual void SetUpOnMainThread() { + old_plugin_data_remover_mime_type_ = + g_browser_process->plugin_data_remover_mime_type(); + g_browser_process->set_plugin_data_remover_mime_type( + kNPAPITestPluginMimeType); + } + + virtual void TearDownOnMainThread() { + g_browser_process->set_plugin_data_remover_mime_type( + old_plugin_data_remover_mime_type_); + } + + virtual void OnWaitableEventSignaled(base::WaitableEvent* waitable_event) { + MessageLoop::current()->Quit(); + } + + virtual void SetUpCommandLine(CommandLine* command_line) { +#ifdef OS_MACOSX + FilePath browser_directory; + PathService::Get(chrome::DIR_APP, &browser_directory); + command_line->AppendSwitchPath(switches::kExtraPluginDir, + browser_directory.AppendASCII("plugins")); +#endif + +// command_line->AppendSwitch(switches::kPluginStartupDialog); + } + + private: + std::string old_plugin_data_remover_mime_type_; +}; + +IN_PROC_BROWSER_TEST_F(PluginDataRemoverTest, RemoveData) { + scoped_refptr<PluginDataRemover> plugin_data_remover(new PluginDataRemover()); + plugin_data_remover->set_mime_type(kNPAPITestPluginMimeType); + base::WaitableEventWatcher watcher; + base::WaitableEvent* event = + plugin_data_remover->StartRemoving(base::Time()); + watcher.StartWatching(event, this); + ui_test_utils::RunMessageLoop(); +} + +IN_PROC_BROWSER_TEST_F(PluginDataRemoverTest, AtShutdown) { + browser()->profile()->GetPrefs()->SetBoolean( + prefs::kClearSiteDataOnExit, true); + g_browser_process->local_state()->SetBoolean( + prefs::kClearPluginLSODataEnabled, true); +} |