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

Unified Diff: chrome/browser/resource_message_filter.h

Issue 20066: Move resource_message_filter and resource_request_details to the renderer_hos... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resource_message_filter.h
===================================================================
--- chrome/browser/resource_message_filter.h (revision 9158)
+++ chrome/browser/resource_message_filter.h (working copy)
@@ -1,244 +0,0 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_RENDERER_RESOURCE_MSG_FILTER_H_
-#define CHROME_BROWSER_RENDERER_RESOURCE_MSG_FILTER_H_
-
-#include "base/clipboard.h"
-#include "base/file_path.h"
-#include "base/gfx/rect.h"
-#include "base/gfx/native_widget_types.h"
-#include "base/ref_counted.h"
-#include "build/build_config.h"
-#include "chrome/browser/net/resolve_proxy_msg_helper.h"
-#include "chrome/common/ipc_channel_proxy.h"
-#include "chrome/common/notification_observer.h"
-#include "webkit/glue/cache_manager.h"
-
-#if defined(OS_WIN)
-#include <windows.h>
-#include "chrome/browser/renderer_host/resource_dispatcher_host.h"
-#else
-// TODO(port): port ResourceDispatcherHost.
-#include "chrome/common/temp_scaffolding_stubs.h"
-#endif
-
-class ClipboardService;
-class Profile;
-class RenderWidgetHelper;
-class SpellChecker;
-struct WebPluginInfo;
-
-namespace printing {
-class PrinterQuery;
-class PrintJobManager;
-}
-
-namespace webkit_glue {
-struct ScreenInfo;
-}
-
-// This class filters out incoming IPC messages for network requests and
-// processes them on the IPC thread. As a result, network requests are not
-// delayed by costly UI processing that may be occuring on the main thread of
-// the browser. It also means that any hangs in starting a network request
-// will not interfere with browser UI.
-
-class ResourceMessageFilter : public IPC::ChannelProxy::MessageFilter,
- public ResourceDispatcherHost::Receiver,
- public NotificationObserver,
- public ResolveProxyMsgHelper::Delegate {
- public:
- // Create the filter.
- // Note: because the lifecycle of the ResourceMessageFilter is not
- // tied to the lifecycle of the object which created it, the
- // ResourceMessageFilter is 'given' ownership of the spellchecker
- // object and must clean it up on exit.
- ResourceMessageFilter(ResourceDispatcherHost* resource_dispatcher_host,
- PluginService* plugin_service,
- printing::PrintJobManager* print_job_manager,
- int render_process_host_id,
- Profile* profile,
- RenderWidgetHelper* render_widget_helper,
- SpellChecker* spellchecker);
- virtual ~ResourceMessageFilter();
-
- // IPC::ChannelProxy::MessageFilter methods:
- virtual void OnFilterAdded(IPC::Channel* channel);
- virtual void OnChannelConnected(int32 peer_pid);
- virtual void OnChannelClosing();
- virtual bool OnMessageReceived(const IPC::Message& message);
-
- // ResourceDispatcherHost::Receiver methods:
- virtual bool Send(IPC::Message* message);
-
- // Access to the spell checker.
- SpellChecker* spellchecker() { return spellchecker_.get(); }
-
- int render_process_host_id() const { return render_process_host_id_;}
-
- base::ProcessHandle renderer_handle() const { return render_handle_;}
-
- // NotificationObserver implementation.
- virtual void Observe(NotificationType type,
- const NotificationSource& source,
- const NotificationDetails& details);
-
- private:
- void OnMsgCreateWindow(int opener_id, bool user_gesture, int* route_id,
- ModalDialogEvent* modal_dialog_event);
- void OnMsgCreateWidget(int opener_id, bool activatable, int* route_id);
- void OnRequestResource(const IPC::Message& msg, int request_id,
- const ViewHostMsg_Resource_Request& request);
- void OnCancelRequest(int request_id);
- void OnClosePageACK(int new_render_process_host_id, int new_request_id);
- void OnDataReceivedACK(int request_id);
- void OnUploadProgressACK(int request_id);
- void OnSyncLoad(int request_id,
- const ViewHostMsg_Resource_Request& request,
- IPC::Message* result_message);
- void OnSetCookie(const GURL& url, const GURL& policy_url,
- const std::string& cookie);
- void OnGetCookies(const GURL& url, const GURL& policy_url,
- std::string* cookies);
- void OnGetDataDir(std::wstring* data_dir);
- void OnPluginMessage(const FilePath& plugin_path,
- const std::vector<uint8>& message);
- void OnPluginSyncMessage(const FilePath& plugin_path,
- const std::vector<uint8>& message,
- std::vector<uint8> *retval);
- void OnPluginFileDialog(const IPC::Message& msg,
- bool multiple_files,
- const std::wstring& title,
- const std::wstring& filter,
- uint32 user_data);
-
-#if defined(OS_WIN)
- // Cache fonts for the renderer. See ResourceMessageFilter::OnLoadFont
- // implementation for more details
- void OnLoadFont(LOGFONT font);
-#endif
-
- void OnGetScreenInfo(gfx::NativeViewId window,
- webkit_glue::ScreenInfo* results);
- void OnGetPlugins(bool refresh, std::vector<WebPluginInfo>* plugins);
- void OnGetPluginPath(const GURL& url,
- const std::string& mime_type,
- const std::string& clsid,
- FilePath* filename,
- std::string* actual_mime_type);
- void OnOpenChannelToPlugin(const GURL& url,
- const std::string& mime_type,
- const std::string& clsid,
- const std::wstring& locale,
- IPC::Message* reply_msg);
- void OnDownloadUrl(const IPC::Message& message,
- const GURL& url,
- const GURL& referrer);
- void OnSpellCheck(const std::wstring& word,
- IPC::Message* reply_msg);
- void OnDnsPrefetch(const std::vector<std::string>& hostnames);
- void OnReceiveContextMenuMsg(const IPC::Message& msg);
- // Clipboard messages
- void OnClipboardWriteObjects(const Clipboard::ObjectMap& objects);
- void OnClipboardIsFormatAvailable(unsigned int format, bool* result);
- void OnClipboardReadText(std::wstring* result);
- void OnClipboardReadAsciiText(std::string* result);
- void OnClipboardReadHTML(std::wstring* markup, GURL* src_url);
-#if defined(OS_WIN)
- void OnGetWindowRect(gfx::NativeViewId window, gfx::Rect *rect);
- void OnGetRootWindowRect(gfx::NativeViewId window, gfx::Rect *rect);
- void OnGetRootWindowResizerRect(gfx::NativeViewId window, gfx::Rect *rect);
-#endif
- void OnGetMimeTypeFromExtension(const std::wstring& ext,
- std::string* mime_type);
- void OnGetMimeTypeFromFile(const std::wstring& file_path,
- std::string* mime_type);
- void OnGetPreferredExtensionForMimeType(const std::string& mime_type,
- std::wstring* ext);
- void OnGetCPBrowsingContext(uint32* context);
- void OnDuplicateSection(base::SharedMemoryHandle renderer_handle,
- base::SharedMemoryHandle* browser_handle);
- void OnResourceTypeStats(const CacheManager::ResourceTypeStats& stats);
-
- void OnResolveProxy(const GURL& url, IPC::Message* reply_msg);
-
- // ResolveProxyMsgHelper::Delegate implementation:
- virtual void OnResolveProxyCompleted(IPC::Message* reply_msg,
- int result,
- const std::string& proxy_list);
-
- // A javascript code requested to print the current page. This is done in two
- // steps and this is the first step. Get the print setting right here
- // synchronously. It will hang the I/O completely.
- void OnGetDefaultPrintSettings(IPC::Message* reply_msg);
- void OnGetDefaultPrintSettingsReply(
- scoped_refptr<printing::PrinterQuery> printer_query,
- IPC::Message* reply_msg);
-#if defined(OS_WIN)
- // A javascript code requested to print the current page. The renderer host
- // have to show to the user the print dialog and returns the selected print
- // settings.
- void OnScriptedPrint(gfx::NativeViewId host_window,
- int cookie,
- int expected_pages_count,
- IPC::Message* reply_msg);
- void OnScriptedPrintReply(
- scoped_refptr<printing::PrinterQuery> printer_query,
- IPC::Message* reply_msg);
-#endif
-
- // We have our own clipboard service because we want to access the clipboard
- // on the IO thread instead of forwarding (possibly synchronous) messages to
- // the UI thread.
- // This instance of the clipboard service should be accessed only on the IO
- // thread.
- static ClipboardService* GetClipboardService();
-
- // The channel associated with the renderer connection. This pointer is not
- // owned by this class.
- IPC::Channel* channel_;
-
- // Cached resource request dispatcher host and plugin service, guaranteed to
- // be non-null if Init succeeds. We do not own the objects, they are managed
- // by the BrowserProcess, which has a wider scope than we do.
- ResourceDispatcherHost* resource_dispatcher_host_;
- PluginService* plugin_service_;
- printing::PrintJobManager* print_job_manager_;
-
- // ID for the RenderProcessHost that corresponds to this channel. This is
- // used by the ResourceDispatcherHost to look up the TabContents that
- // originated URLRequest. Since the RenderProcessHost can be destroyed
- // before this object, we only hold an ID for lookup.
- int render_process_host_id_;
-
- // Our spellchecker object.
- scoped_refptr<SpellChecker> spellchecker_;
-
- // Helper class for handling PluginProcessHost_ResolveProxy messages (manages
- // the requests to the proxy service).
- ResolveProxyMsgHelper resolve_proxy_msg_helper_;
-
- // Process handle of the renderer process.
- base::ProcessHandle render_handle_;
-
- // Contextual information to be used for requests created here.
- scoped_refptr<URLRequestContext> request_context_;
-
- // A pointer to the profile associated with this filter.
- //
- // DANGER! Do not dereference this pointer! This class lives on the I/O thread
- // and the profile may only be used on the UI thread. It is used only for
- // determining which notifications to watch for.
- //
- // This is void* to prevent people from accidentally dereferencing it.
- // When registering for observers, cast to Profile*.
- void* profile_;
-
- scoped_refptr<RenderWidgetHelper> render_widget_helper_;
-
- DISALLOW_COPY_AND_ASSIGN(ResourceMessageFilter);
-};
-
-#endif // CHROME_BROWSER_RENDERER_RESOURCE_MSG_FILTER_H_

Powered by Google App Engine
This is Rietveld 408576698