Index: chrome/browser/plugin_data_remover.h |
diff --git a/chrome/browser/plugin_data_remover.h b/chrome/browser/plugin_data_remover.h |
index cbc255678aeac711efbf95dc7f7251ec00185cc2..03b7e6fcc0801b5e9ff9b9a3887ca1177fe01d36 100644 |
--- a/chrome/browser/plugin_data_remover.h |
+++ b/chrome/browser/plugin_data_remover.h |
@@ -9,8 +9,7 @@ |
#include "base/ref_counted.h" |
#include "base/time.h" |
#include "chrome/browser/plugin_process_host.h" |
-#include "ipc/ipc_channel_proxy.h" |
-#include "ipc/ipc_message.h" |
+#include "ipc/ipc_channel.h" |
class Task; |
@@ -18,16 +17,27 @@ namespace base { |
class MessageLoopProxy; |
} |
-class PluginDataRemover : public PluginProcessHost::Client, |
+class PluginDataRemover : public base::RefCountedThreadSafe<PluginDataRemover>, |
+ public PluginProcessHost::Client, |
public IPC::Channel::Listener { |
public: |
PluginDataRemover(); |
- ~PluginDataRemover(); |
- // Starts removing plug-in data stored since |begin_time| and calls |
- // |done_task| on the current thread when finished. |
+ // Starts removing plug-in data stored since |begin_time|. If |done_task| is |
+ // not NULL, it is run on the current thread when removing has finished. |
void StartRemoving(base::Time begin_time, Task* done_task); |
+ // Returns whether there is a plug-in installed that supports removing |
+ // LSO data. Because this method possibly has to load the plug-in list, it |
+ // should only be called on the FILE thread. |
+ static bool IsSupported(); |
+ |
+ bool is_removing() const { return is_removing_; } |
+ |
+ // Sets the task to run when removing has finished. Takes ownership of |
+ // the passed task. |
+ void set_done_task(Task* task) { done_task_.reset(task); } |
+ |
// PluginProcessHost::Client methods |
virtual int ID(); |
virtual bool OffTheRecord(); |
@@ -40,18 +50,24 @@ class PluginDataRemover : public PluginProcessHost::Client, |
virtual void OnChannelError(); |
private: |
+ friend class base::RefCountedThreadSafe<PluginDataRemover>; |
+ ~PluginDataRemover(); |
+ |
void SignalDone(); |
- void SignalError(); |
+ void ConnectToChannel(const IPC::ChannelHandle& handle); |
void OnClearSiteDataResult(bool success); |
void OnTimeout(); |
scoped_refptr<base::MessageLoopProxy> message_loop_; |
+ bool is_removing_; |
scoped_ptr<Task> done_task_; |
+ // The point in time when we start removing data. |
+ base::Time remove_start_time_; |
+ // The point in time from which on we remove data. |
base::Time begin_time_; |
// We own the channel, but it's used on the IO thread, so it needs to be |
// deleted there as well. |
IPC::Channel* channel_; |
- ScopedRunnableMethodFactory<PluginDataRemover> method_factory_; |
}; |
#endif // CHROME_BROWSER_PLUGIN_DATA_REMOVER_H_ |