| Index: chrome/plugin/plugin_channel.cc
|
| diff --git a/chrome/plugin/plugin_channel.cc b/chrome/plugin/plugin_channel.cc
|
| index aa3b7130379c53e5b6325f91cc9ac00165f95d2d..0b6d5da1379999ea59933e38183f34b897b8a8f8 100644
|
| --- a/chrome/plugin/plugin_channel.cc
|
| +++ b/chrome/plugin/plugin_channel.cc
|
| @@ -16,6 +16,7 @@
|
| #include "chrome/plugin/plugin_thread.h"
|
| #include "chrome/plugin/webplugin_delegate_stub.h"
|
| #include "chrome/plugin/webplugin_proxy.h"
|
| +#include "webkit/glue/plugins/plugin_instance.h"
|
|
|
| #if defined(OS_POSIX)
|
| #include "base/eintr_wrapper.h"
|
| @@ -211,6 +212,7 @@ void PluginChannel::OnControlMessageReceived(const IPC::Message& msg) {
|
| IPC_MESSAGE_HANDLER_DELAY_REPLY(PluginMsg_DestroyInstance,
|
| OnDestroyInstance)
|
| IPC_MESSAGE_HANDLER(PluginMsg_GenerateRouteID, OnGenerateRouteID)
|
| + IPC_MESSAGE_HANDLER(PluginMsg_ClearSiteData, OnClearSiteData)
|
| IPC_MESSAGE_UNHANDLED_ERROR()
|
| IPC_END_MESSAGE_MAP()
|
| }
|
| @@ -256,6 +258,35 @@ int PluginChannel::GenerateRouteID() {
|
| return ++last_id;
|
| }
|
|
|
| +void PluginChannel::OnClearSiteData(uint64 flags,
|
| + const std::string& domain,
|
| + base::Time begin_time) {
|
| + bool success = false;
|
| + CommandLine* command_line = CommandLine::ForCurrentProcess();
|
| + FilePath path = command_line->GetSwitchValuePath(switches::kPluginPath);
|
| + scoped_refptr<NPAPI::PluginLib> plugin_lib(
|
| + NPAPI::PluginLib::CreatePluginLib(path));
|
| + if (plugin_lib.get()) {
|
| + NPError err = plugin_lib->NP_Initialize();
|
| + if (err == NPERR_NO_ERROR) {
|
| + scoped_refptr<NPAPI::PluginInstance> instance(
|
| + plugin_lib->CreateInstance(std::string()));
|
| +
|
| + const char* domain_str = domain.empty() ? NULL : domain.c_str();
|
| + uint64 max_age;
|
| + if (begin_time > base::Time()) {
|
| + base::TimeDelta delta = base::Time::Now() - begin_time;
|
| + max_age = delta.InSeconds();
|
| + } else {
|
| + max_age = kuint64max;
|
| + }
|
| + err = instance->NPP_ClearSiteData(flags, domain_str, max_age);
|
| + success = (err == NPERR_NO_ERROR);
|
| + }
|
| + }
|
| + Send(new PluginHostMsg_ClearSiteDataResult(success));
|
| +}
|
| +
|
| base::WaitableEvent* PluginChannel::GetModalDialogEvent(
|
| gfx::NativeViewId containing_window) {
|
| return filter_->GetModalDialogEvent(containing_window);
|
|
|