15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef CONTENT_BROWSER_SHARED_WORKER_SHARED_WORKER_MESSAGE_FILTER_H_ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define CONTENT_BROWSER_SHARED_WORKER_SHARED_WORKER_MESSAGE_FILTER_H_ 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "content/browser/shared_worker/worker_storage_partition.h" 9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "content/common/content_export.h" 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "content/public/browser/browser_message_filter.h" 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class GURL; 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct ViewHostMsg_CreateWorker_Params; 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace content { 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class MessagePortMessageFilter; 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class ResourceContext; 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// If "enable-embedded-shared-worker" is set this class will be used instead of 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// WorkerMessageFilter. 21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class CONTENT_EXPORT SharedWorkerMessageFilter : public BrowserMessageFilter { 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public: 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) SharedWorkerMessageFilter(int render_process_id, 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ResourceContext* resource_context, 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const WorkerStoragePartition& partition, 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MessagePortMessageFilter* message_port_filter); 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // BrowserMessageFilter implementation. 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void OnChannelClosing() OVERRIDE; 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int GetNextRoutingID(); 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int render_process_id() const { return render_process_id_; } 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MessagePortMessageFilter* message_port_message_filter() const { 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return message_port_message_filter_; 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) protected: 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // This is protected, so we can define sub classes for testing. 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual ~SharedWorkerMessageFilter(); 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private: 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Message handlers. 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnCreateWorker(const ViewHostMsg_CreateWorker_Params& params, 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int* route_id); 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnForwardToWorker(const IPC::Message& message); 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnDocumentDetached(unsigned long long document_id); 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnWorkerContextClosed(int worker_route_id); 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnWorkerContextDestroyed(int worker_route_id); 5103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 5203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) void OnWorkerReadyForInspection(int worker_route_id); 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnWorkerScriptLoaded(int worker_route_id); 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnWorkerScriptLoadFailed(int worker_route_id); 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnWorkerConnected(int message_port_id, int worker_route_id); 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnAllowDatabase(int worker_route_id, 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const GURL& url, 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& name, 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& display_name, 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) unsigned long estimated_size, 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool* result); 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void OnRequestFileSystemAccess(int worker_route_id, 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const GURL& url, 64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch IPC::Message* reply_msg); 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnAllowIndexedDB(int worker_route_id, 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const GURL& url, 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& name, 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool* result); 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const int render_process_id_; 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ResourceContext* const resource_context_; 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const WorkerStoragePartition partition_; 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MessagePortMessageFilter* const message_port_message_filter_; 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DISALLOW_IMPLICIT_CONSTRUCTORS(SharedWorkerMessageFilter); 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace content 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // CONTENT_BROWSER_SHARED_WORKER_SHARED_WORKER_MESSAGE_FILTER_H_ 81