Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1310)

Side by Side Diff: chrome/browser/plugin_data_remover_helper.cc

Issue 8071013: Finish moving plugin probing out of process. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Ready for review Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/plugin_data_remover_helper.h" 5 #include "chrome/browser/plugin_data_remover_helper.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h"
10 #include "base/memory/ref_counted.h" 11 #include "base/memory/ref_counted.h"
11 #include "chrome/browser/plugin_data_remover.h" 12 #include "chrome/browser/plugin_data_remover.h"
12 #include "chrome/browser/plugin_prefs.h" 13 #include "chrome/browser/plugin_prefs.h"
13 #include "chrome/browser/prefs/pref_service.h" 14 #include "chrome/browser/prefs/pref_service.h"
14 #include "chrome/browser/profiles/profile.h" 15 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/common/chrome_notification_types.h" 16 #include "chrome/common/chrome_notification_types.h"
16 #include "content/browser/browser_thread.h" 17 #include "content/browser/browser_thread.h"
18 #include "content/browser/plugin_service.h"
17 #include "content/common/notification_service.h" 19 #include "content/common/notification_service.h"
18 20
19 // The internal class is refcounted so it can outlive PluginDataRemoverHelper. 21 // The internal class is refcounted so it can outlive PluginDataRemoverHelper.
Bernhard Bauer 2011/10/05 13:00:46 If we're doing everything on the UI thread now, th
Robert Sesek 2011/10/05 18:27:16 Done.
20 class PluginDataRemoverHelper::Internal 22 class PluginDataRemoverHelper::Internal
21 : public base::RefCountedThreadSafe<PluginDataRemoverHelper::Internal> { 23 : public base::RefCountedThreadSafe<PluginDataRemoverHelper::Internal> {
22 public: 24 public:
23 Internal(const char* pref_name, Profile* profile) 25 Internal(const char* pref_name, Profile* profile)
24 : pref_name_(pref_name), profile_(profile) {} 26 : pref_name_(pref_name), profile_(profile) {}
25 27
26 void StartUpdate() { 28 void StartUpdate() {
27 BrowserThread::PostTask( 29 PluginService::GetInstance()->GetPlugins(
28 BrowserThread::FILE, 30 base::Bind(&PluginDataRemoverHelper::Internal::GotPlugins, this,
29 FROM_HERE, 31 make_scoped_refptr(PluginPrefs::GetForProfile(profile_))));
30 base::Bind(&PluginDataRemoverHelper::Internal::UpdateOnFileThread,
31 this,
32 make_scoped_refptr(PluginPrefs::GetForProfile(profile_))));
33 } 32 }
34 33
35 void Invalidate() { 34 void Invalidate() {
36 profile_ = NULL; 35 profile_ = NULL;
37 } 36 }
38 37
39 private: 38 private:
40 friend class base::RefCountedThreadSafe<Internal>; 39 friend class base::RefCountedThreadSafe<Internal>;
41 40
42 ~Internal() {} 41 ~Internal() {}
43 42
44 void UpdateOnFileThread(scoped_refptr<PluginPrefs> plugin_prefs) { 43 void GotPlugins(scoped_refptr<PluginPrefs> plugin_prefs,
45 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 44 const std::vector<webkit::WebPluginInfo>& plugins) {
46 bool result = PluginDataRemover::IsSupported(plugin_prefs); 45 bool result = PluginDataRemover::IsSupported(plugin_prefs);
47 BrowserThread::PostTask( 46 BrowserThread::PostTask(
48 BrowserThread::UI, 47 BrowserThread::UI,
49 FROM_HERE, 48 FROM_HERE,
50 base::Bind(&PluginDataRemoverHelper::Internal::SetPrefOnUIThread, 49 base::Bind(&PluginDataRemoverHelper::Internal::SetPrefOnUIThread,
51 this, 50 this,
52 result)); 51 result));
53 } 52 }
54 53
55 void SetPrefOnUIThread(bool value) { 54 void SetPrefOnUIThread(bool value) {
(...skipping 29 matching lines...) Expand all
85 84
86 void PluginDataRemoverHelper::Observe(int type, 85 void PluginDataRemoverHelper::Observe(int type,
87 const NotificationSource& source, 86 const NotificationSource& source,
88 const NotificationDetails& details) { 87 const NotificationDetails& details) {
89 if (type == chrome::NOTIFICATION_PLUGIN_ENABLE_STATUS_CHANGED) { 88 if (type == chrome::NOTIFICATION_PLUGIN_ENABLE_STATUS_CHANGED) {
90 internal_->StartUpdate(); 89 internal_->StartUpdate();
91 } else { 90 } else {
92 NOTREACHED(); 91 NOTREACHED();
93 } 92 }
94 } 93 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698