diff options
author | rsleevi@chromium.org <rsleevi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-11 19:30:55 +0000 |
---|---|---|
committer | rsleevi@chromium.org <rsleevi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-11 19:30:55 +0000 |
commit | 871da305e61696753db715bf68fedec2b071fde4 (patch) | |
tree | e485e66cd37a1f14d0e72adc29cdb6fbbe38267b /content/public/browser | |
parent | 66149a5cbd355757e63a82b9d3280cc6e0d36da8 (diff) | |
download | chromium_src-871da305e61696753db715bf68fedec2b071fde4.zip chromium_src-871da305e61696753db715bf68fedec2b071fde4.tar.gz chromium_src-871da305e61696753db715bf68fedec2b071fde4.tar.bz2 |
RefCounted types should not have public destructors, content/ remaining bits
BUG=123295
TEST=none
TBR=jam
Review URL: https://chromiumcodereview.appspot.com/10069054
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@136631 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/public/browser')
-rw-r--r-- | content/public/browser/browser_message_filter.cc | 96 | ||||
-rw-r--r-- | content/public/browser/browser_message_filter.h | 3 | ||||
-rw-r--r-- | content/public/browser/download_manager.h | 10 | ||||
-rw-r--r-- | content/public/browser/indexed_db_context.h | 6 | ||||
-rw-r--r-- | content/public/browser/resource_dispatcher_host_login_delegate.h | 6 | ||||
-rw-r--r-- | content/public/browser/speech_recognizer.h | 9 |
6 files changed, 67 insertions, 63 deletions
diff --git a/content/public/browser/browser_message_filter.cc b/content/public/browser/browser_message_filter.cc index 209f4a9..3d695ab 100644 --- a/content/public/browser/browser_message_filter.cc +++ b/content/public/browser/browser_message_filter.cc @@ -22,10 +22,6 @@ BrowserMessageFilter::BrowserMessageFilter() : channel_(NULL), peer_handle_(base::kNullProcessHandle) { } -BrowserMessageFilter::~BrowserMessageFilter() { - base::CloseProcessHandle(peer_handle_); -} - void BrowserMessageFilter::OnFilterAdded(IPC::Channel* channel) { channel_ = channel; } @@ -40,6 +36,32 @@ void BrowserMessageFilter::OnChannelConnected(int32 peer_pid) { } } +bool BrowserMessageFilter::OnMessageReceived(const IPC::Message& message) { + BrowserThread::ID thread = BrowserThread::IO; + OverrideThreadForMessage(message, &thread); + + if (thread == BrowserThread::IO) { + scoped_refptr<base::TaskRunner> runner = + OverrideTaskRunnerForMessage(message); + if (runner) { + runner->PostTask(FROM_HERE, + base::Bind(base::IgnoreResult(&BrowserMessageFilter::DispatchMessage), + this, message)); + return true; + } + return DispatchMessage(message); + } + + if (thread == BrowserThread::UI && !CheckCanDispatchOnUI(message, this)) + return true; + + BrowserThread::PostTask( + thread, FROM_HERE, + base::Bind(base::IgnoreResult(&BrowserMessageFilter::DispatchMessage), + this, message)); + return true; +} + bool BrowserMessageFilter::Send(IPC::Message* message) { if (message->is_sync()) { // We don't support sending synchronous messages from the browser. If we @@ -75,50 +97,6 @@ base::TaskRunner* BrowserMessageFilter::OverrideTaskRunnerForMessage( return NULL; } -bool BrowserMessageFilter::OnMessageReceived(const IPC::Message& message) { - BrowserThread::ID thread = BrowserThread::IO; - OverrideThreadForMessage(message, &thread); - - if (thread == BrowserThread::IO) { - scoped_refptr<base::TaskRunner> runner = - OverrideTaskRunnerForMessage(message); - if (runner) { - runner->PostTask(FROM_HERE, - base::Bind(base::IgnoreResult(&BrowserMessageFilter::DispatchMessage), - this, message)); - return true; - } - return DispatchMessage(message); - } - - if (thread == BrowserThread::UI && !CheckCanDispatchOnUI(message, this)) - return true; - - BrowserThread::PostTask( - thread, FROM_HERE, - base::Bind(base::IgnoreResult(&BrowserMessageFilter::DispatchMessage), - this, message)); - return true; -} - -bool BrowserMessageFilter::DispatchMessage(const IPC::Message& message) { - bool message_was_ok = true; - bool rv = OnMessageReceived(message, &message_was_ok); - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO) || rv) << - "Must handle messages that were dispatched to another thread!"; - if (!message_was_ok) { - content::RecordAction(UserMetricsAction("BadMessageTerminate_BMF")); - BadMessageReceived(); - } - - return rv; -} - -void BrowserMessageFilter::BadMessageReceived() { - base::KillProcess(peer_handle(), content::RESULT_CODE_KILLED_BAD_MESSAGE, - false); -} - bool BrowserMessageFilter::CheckCanDispatchOnUI(const IPC::Message& message, IPC::Message::Sender* sender) { #if defined(OS_WIN) && !defined(USE_AURA) @@ -144,4 +122,26 @@ bool BrowserMessageFilter::CheckCanDispatchOnUI(const IPC::Message& message, return true; } +BrowserMessageFilter::~BrowserMessageFilter() { + base::CloseProcessHandle(peer_handle_); +} + +void BrowserMessageFilter::BadMessageReceived() { + base::KillProcess(peer_handle(), content::RESULT_CODE_KILLED_BAD_MESSAGE, + false); +} + +bool BrowserMessageFilter::DispatchMessage(const IPC::Message& message) { + bool message_was_ok = true; + bool rv = OnMessageReceived(message, &message_was_ok); + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO) || rv) << + "Must handle messages that were dispatched to another thread!"; + if (!message_was_ok) { + content::RecordAction(UserMetricsAction("BadMessageTerminate_BMF")); + BadMessageReceived(); + } + + return rv; +} + } // namespace content diff --git a/content/public/browser/browser_message_filter.h b/content/public/browser/browser_message_filter.h index 32cfc90..441ad70 100644 --- a/content/public/browser/browser_message_filter.h +++ b/content/public/browser/browser_message_filter.h @@ -24,7 +24,6 @@ class CONTENT_EXPORT BrowserMessageFilter : public IPC::Message::Sender { public: BrowserMessageFilter(); - virtual ~BrowserMessageFilter(); // IPC::ChannelProxy::MessageFilter methods. If you override them, make sure // to call them as well. These are always called on the IO thread. @@ -73,6 +72,8 @@ class CONTENT_EXPORT BrowserMessageFilter : IPC::Message::Sender* sender); protected: + virtual ~BrowserMessageFilter(); + // Call this if a message couldn't be deserialized. This kills the renderer. // Can be called on any thread. virtual void BadMessageReceived(); diff --git a/content/public/browser/download_manager.h b/content/public/browser/download_manager.h index b0039bd..b405a55 100644 --- a/content/public/browser/download_manager.h +++ b/content/public/browser/download_manager.h @@ -60,8 +60,6 @@ class DownloadUrlParameters; class CONTENT_EXPORT DownloadManager : public base::RefCountedThreadSafe<DownloadManager> { public: - virtual ~DownloadManager() {} - static DownloadManager* Create( DownloadManagerDelegate* delegate, net::NetLog* net_log); @@ -247,11 +245,11 @@ class CONTENT_EXPORT DownloadManager virtual void SetDownloadManagerDelegate( DownloadManagerDelegate* delegate) = 0; + protected: + virtual ~DownloadManager() {} + private: - friend class base::RefCountedThreadSafe< - DownloadManager, BrowserThread::DeleteOnUIThread>; - friend struct BrowserThread::DeleteOnThread<BrowserThread::UI>; - friend class base::DeleteHelper<DownloadManager>; + friend class base::RefCountedThreadSafe<DownloadManager>; }; } // namespace content diff --git a/content/public/browser/indexed_db_context.h b/content/public/browser/indexed_db_context.h index 91b8664..8c51288 100644 --- a/content/public/browser/indexed_db_context.h +++ b/content/public/browser/indexed_db_context.h @@ -24,8 +24,6 @@ namespace content { // Call these methods only on the WebKit thread. class IndexedDBContext : public base::RefCountedThreadSafe<IndexedDBContext> { public: - virtual ~IndexedDBContext() {} - // Methods used in response to QuotaManager requests. virtual std::vector<GURL> GetAllOrigins() = 0; virtual int64 GetOriginDiskUsage(const GURL& origin_url) = 0; @@ -36,6 +34,10 @@ class IndexedDBContext : public base::RefCountedThreadSafe<IndexedDBContext> { // Get the file name of the local storage file for the given origin. virtual FilePath GetFilePathForTesting(const string16& origin_id) const = 0; + + protected: + friend class base::RefCountedThreadSafe<IndexedDBContext>; + virtual ~IndexedDBContext() {} }; } // namespace content diff --git a/content/public/browser/resource_dispatcher_host_login_delegate.h b/content/public/browser/resource_dispatcher_host_login_delegate.h index 0d99edb..d856686 100644 --- a/content/public/browser/resource_dispatcher_host_login_delegate.h +++ b/content/public/browser/resource_dispatcher_host_login_delegate.h @@ -20,11 +20,13 @@ namespace content { class CONTENT_EXPORT ResourceDispatcherHostLoginDelegate : public base::RefCountedThreadSafe<ResourceDispatcherHostLoginDelegate> { public: - virtual ~ResourceDispatcherHostLoginDelegate() {} - // Notify the login delegate that the request was cancelled. // This function can only be called from the IO thread. virtual void OnRequestCancelled() = 0; + + protected: + friend class base::RefCountedThreadSafe<ResourceDispatcherHostLoginDelegate>; + virtual ~ResourceDispatcherHostLoginDelegate() {} }; } // public content diff --git a/content/public/browser/speech_recognizer.h b/content/public/browser/speech_recognizer.h index a9cec70..4553952 100644 --- a/content/public/browser/speech_recognizer.h +++ b/content/public/browser/speech_recognizer.h @@ -25,7 +25,6 @@ class SpeechRecognitionEventListener; // extensions. class SpeechRecognizer : public base::RefCountedThreadSafe<SpeechRecognizer> { public: - CONTENT_EXPORT static SpeechRecognizer* Create( SpeechRecognitionEventListener* event_listener, int session_id, @@ -36,8 +35,6 @@ class SpeechRecognizer : public base::RefCountedThreadSafe<SpeechRecognizer> { const std::string& hardware_info, const std::string& origin_url); - virtual ~SpeechRecognizer() {} - // Starts audio recording and the recognition process. The same // SpeechRecognizer instance can be used multiple times for speech recognition // though each recognition request can be made only after the previous one @@ -56,8 +53,12 @@ class SpeechRecognizer : public base::RefCountedThreadSafe<SpeechRecognizer> { // or waiting for a result. virtual bool IsActive() const = 0; - // Checks wether the recognizer is capturing audio. + // Checks whether the recognizer is capturing audio. virtual bool IsCapturingAudio() const = 0; + + protected: + friend class base::RefCountedThreadSafe<SpeechRecognizer>; + virtual ~SpeechRecognizer() {} }; } // namespace content |