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

Side by Side Diff: android_webview/browser/aw_content_browser_client.cc

Issue 142923005: Allow MessageFilters to restrict listening to specific message classes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: DCHECK valid message class OR special message type Created 6 years, 10 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "android_webview/browser/aw_content_browser_client.h" 5 #include "android_webview/browser/aw_content_browser_client.h"
6 6
7 #include "android_webview/browser/aw_browser_context.h" 7 #include "android_webview/browser/aw_browser_context.h"
8 #include "android_webview/browser/aw_browser_main_parts.h" 8 #include "android_webview/browser/aw_browser_main_parts.h"
9 #include "android_webview/browser/aw_contents_client_bridge_base.h" 9 #include "android_webview/browser/aw_contents_client_bridge_base.h"
10 #include "android_webview/browser/aw_contents_io_thread_client.h" 10 #include "android_webview/browser/aw_contents_io_thread_client.h"
(...skipping 21 matching lines...) Expand all
32 #include "net/ssl/ssl_info.h" 32 #include "net/ssl/ssl_info.h"
33 #include "ui/base/l10n/l10n_util_android.h" 33 #include "ui/base/l10n/l10n_util_android.h"
34 #include "ui/base/resource/resource_bundle.h" 34 #include "ui/base/resource/resource_bundle.h"
35 #include "webkit/common/webpreferences.h" 35 #include "webkit/common/webpreferences.h"
36 36
37 using content::BrowserThread; 37 using content::BrowserThread;
38 38
39 namespace android_webview { 39 namespace android_webview {
40 namespace { 40 namespace {
41 41
42 const uint32 kFilteredMessageClasses[] = {
43 AndroidWebViewMsgStart
44 };
45
42 // TODO(sgurun) move this to its own file. 46 // TODO(sgurun) move this to its own file.
43 // This class filters out incoming aw_contents related IPC messages for the 47 // This class filters out incoming aw_contents related IPC messages for the
44 // renderer process on the IPC thread. 48 // renderer process on the IPC thread.
45 class AwContentsMessageFilter : public content::BrowserMessageFilter { 49 class AwContentsMessageFilter : public content::BrowserMessageFilter {
46 public: 50 public:
47 explicit AwContentsMessageFilter(int process_id); 51 explicit AwContentsMessageFilter(int process_id);
48 52
49 // BrowserMessageFilter methods. 53 // BrowserMessageFilter methods.
50 virtual void OverrideThreadForMessage( 54 virtual void OverrideThreadForMessage(
51 const IPC::Message& message, 55 const IPC::Message& message,
52 BrowserThread::ID* thread) OVERRIDE; 56 BrowserThread::ID* thread) OVERRIDE;
53 virtual bool OnMessageReceived( 57 virtual bool OnMessageReceived(
54 const IPC::Message& message, 58 const IPC::Message& message,
55 bool* message_was_ok) OVERRIDE; 59 bool* message_was_ok) OVERRIDE;
56 60
57 void OnShouldOverrideUrlLoading(int routing_id, 61 void OnShouldOverrideUrlLoading(int routing_id,
58 const base::string16& url, 62 const base::string16& url,
59 bool* ignore_navigation); 63 bool* ignore_navigation);
60 void OnSubFrameCreated(int parent_render_frame_id, int child_render_frame_id); 64 void OnSubFrameCreated(int parent_render_frame_id, int child_render_frame_id);
61 65
62 private: 66 private:
63 virtual ~AwContentsMessageFilter(); 67 virtual ~AwContentsMessageFilter();
64 68
65 int process_id_; 69 int process_id_;
66 70
67 DISALLOW_COPY_AND_ASSIGN(AwContentsMessageFilter); 71 DISALLOW_COPY_AND_ASSIGN(AwContentsMessageFilter);
68 }; 72 };
69 73
70 AwContentsMessageFilter::AwContentsMessageFilter(int process_id) 74 AwContentsMessageFilter::AwContentsMessageFilter(int process_id)
71 : process_id_(process_id) { 75 : BrowserMessageFilter(
76 kFilteredMessageClasses, arraysize(kFilteredMessageClasses)),
77 process_id_(process_id) {
72 } 78 }
73 79
74 AwContentsMessageFilter::~AwContentsMessageFilter() { 80 AwContentsMessageFilter::~AwContentsMessageFilter() {
75 } 81 }
76 82
77 void AwContentsMessageFilter::OverrideThreadForMessage( 83 void AwContentsMessageFilter::OverrideThreadForMessage(
78 const IPC::Message& message, BrowserThread::ID* thread) { 84 const IPC::Message& message, BrowserThread::ID* thread) {
79 if (message.type() == AwViewHostMsg_ShouldOverrideUrlLoading::ID) { 85 if (message.type() == AwViewHostMsg_ShouldOverrideUrlLoading::ID) {
80 *thread = BrowserThread::UI; 86 *thread = BrowserThread::UI;
81 } 87 }
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 WebPreferences* web_prefs) { 497 WebPreferences* web_prefs) {
492 if (!preferences_populater_.get()) { 498 if (!preferences_populater_.get()) {
493 preferences_populater_ = make_scoped_ptr(native_factory_-> 499 preferences_populater_ = make_scoped_ptr(native_factory_->
494 CreateWebPreferencesPopulater()); 500 CreateWebPreferencesPopulater());
495 } 501 }
496 preferences_populater_->PopulateFor( 502 preferences_populater_->PopulateFor(
497 content::WebContents::FromRenderViewHost(rvh), web_prefs); 503 content::WebContents::FromRenderViewHost(rvh), web_prefs);
498 } 504 }
499 505
500 } // namespace android_webview 506 } // namespace android_webview
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/chrome_net_benchmarking_message_filter.cc » ('j') | ipc/ipc_channel_proxy.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698