15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// found in the LICENSE file. 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef CONTENT_BROWSER_RENDERER_HOST_PEPPER_PEPPER_HOST_RESOLVER_MESSAGE_FILTER_H_ 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CONTENT_BROWSER_RENDERER_HOST_PEPPER_PEPPER_HOST_RESOLVER_MESSAGE_FILTER_H_ 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include <string> 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include <vector> 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "base/basictypes.h" 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "base/compiler_specific.h" 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "content/common/content_export.h" 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "content/public/common/process_type.h" 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "ppapi/c/pp_instance.h" 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "ppapi/host/resource_message_filter.h" 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)struct PP_HostResolver_Private_Hint; 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)struct PP_NetAddress_Private; 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace net { 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class AddressList; 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace ppapi { 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)struct HostPortPair; 2753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace host { 291e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)struct HostMessageContext; 3009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 315d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)} 32a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) 33f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)namespace content { 34197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 35a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)class BrowserPpapiHostImpl; 36a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)class ResourceContext; 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)class CONTENT_EXPORT PepperHostResolverMessageFilter 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) : public ppapi::host::ResourceMessageFilter { 40d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) public: 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PepperHostResolverMessageFilter(BrowserPpapiHostImpl* host, 42d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PP_Instance instance, 4309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) bool private_api); 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) protected: 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual ~PepperHostResolverMessageFilter(); 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) private: 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) typedef std::vector<PP_NetAddress_Private> NetAddressList; 50f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 5109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) // ppapi::host::ResourceMessageFilter overrides. 5209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) virtual scoped_refptr<base::TaskRunner> OverrideTaskRunnerForMessage( 53f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu const IPC::Message& message) OVERRIDE; 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual int32_t OnResourceMessageReceived( 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const IPC::Message& msg, 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ppapi::host::HostMessageContext* context) OVERRIDE; 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) int32_t OnMsgResolve(const ppapi::host::HostMessageContext* context, 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const ppapi::HostPortPair& host_port, 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const PP_HostResolver_Private_Hint& hint); 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Backend for OnMsgResolve(). Delegates host resolution to the 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Browser's HostResolver. Must be called on the IO thread. 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void DoResolve(const ppapi::host::ReplyMessageContext& context, 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const ppapi::HostPortPair& host_port, 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const PP_HostResolver_Private_Hint& hint, 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ResourceContext* resource_context); 6809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 6909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) void OnLookupFinished(int net_result, 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const net::AddressList& addresses, 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const ppapi::host::ReplyMessageContext& bound_info); 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void SendResolveReply(int32_t result, 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const std::string& canonical_name, 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const NetAddressList& net_address_list, 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const ppapi::host::ReplyMessageContext& context); 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void SendResolveError(int32_t error, 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const ppapi::host::ReplyMessageContext& context); 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool external_plugin_; 80d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool private_api_; 81d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) int render_process_id_; 82d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) int render_frame_id_; 83d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 84d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PepperHostResolverMessageFilter); 85f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu}; 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} // namespace content 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#endif // CONTENT_BROWSER_RENDERER_HOST_PEPPER_PEPPER_HOST_RESOLVER_MESSAGE_FILTER_H_ 9009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)