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

Side by Side Diff: chrome/browser/renderer_host/database_dispatcher_host.h

Issue 5757002: Make DatabaseDispatcherHost be a message filter so that ResourceMessageFilter... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_RENDERER_HOST_DATABASE_DISPATCHER_HOST_H_
6 #define CHROME_BROWSER_RENDERER_HOST_DATABASE_DISPATCHER_HOST_H_
7 #pragma once
8
9 #include "base/hash_tables.h"
10 #include "base/process.h"
11 #include "base/ref_counted.h"
12 #include "base/string16.h"
13 #include "chrome/common/content_settings.h"
14 #include "ipc/ipc_message.h"
15 #include "webkit/database/database_connections.h"
16 #include "webkit/database/database_tracker.h"
17
18 class GURL;
19 class HostContentSettingsMap;
20 class Receiver;
21 class ResourceMessageFilter;
22
23 class DatabaseDispatcherHost
24 : public base::RefCountedThreadSafe<DatabaseDispatcherHost>,
25 public webkit_database::DatabaseTracker::Observer {
26 public:
27 DatabaseDispatcherHost(webkit_database::DatabaseTracker* db_tracker,
28 IPC::Message::Sender* sender,
29 HostContentSettingsMap *host_content_settings_map);
30 void Init(base::ProcessHandle process_handle);
31 void Shutdown();
32
33 bool OnMessageReceived(const IPC::Message& message, bool* message_was_ok);
34
35 // VFS message handlers (IO thread)
36 void OnDatabaseOpenFile(const string16& vfs_file_name,
37 int desired_flags,
38 IPC::Message* reply_msg);
39 void OnDatabaseDeleteFile(const string16& vfs_file_name,
40 const bool& sync_dir,
41 IPC::Message* reply_msg);
42 void OnDatabaseGetFileAttributes(const string16& vfs_file_name,
43 IPC::Message* reply_msg);
44 void OnDatabaseGetFileSize(const string16& vfs_file_name,
45 IPC::Message* reply_msg);
46
47 // Database tracker message handlers (IO thread)
48 void OnDatabaseOpened(const string16& origin_identifier,
49 const string16& database_name,
50 const string16& description,
51 int64 estimated_size);
52 void OnDatabaseModified(const string16& origin_identifier,
53 const string16& database_name);
54 void OnDatabaseClosed(const string16& origin_identifier,
55 const string16& database_name);
56 void OnAllowDatabase(const std::string& origin_url,
57 const string16& name,
58 const string16& display_name,
59 unsigned long estimated_size,
60 IPC::Message* reply_msg);
61
62 // DatabaseTracker::Observer callbacks (file thread)
63 virtual void OnDatabaseSizeChanged(const string16& origin_identifier,
64 const string16& database_name,
65 int64 database_size,
66 int64 space_available);
67 virtual void OnDatabaseScheduledForDeletion(const string16& origin_identifier,
68 const string16& database_name);
69
70 webkit_database::DatabaseTracker* database_tracker() const {
71 return db_tracker_.get();
72 }
73
74 void Send(IPC::Message* message);
75
76 private:
77 friend class base::RefCountedThreadSafe<DatabaseDispatcherHost>;
78 virtual ~DatabaseDispatcherHost();
79
80 class PromptDelegate;
81
82 void AddObserver();
83 void RemoveObserver();
84
85 void ReceivedBadMessage(uint32 msg_type);
86
87 // VFS message handlers (file thread)
88 void DatabaseOpenFile(const string16& vfs_file_name,
89 int desired_flags,
90 IPC::Message* reply_msg);
91 void DatabaseDeleteFile(const string16& vfs_file_name,
92 bool sync_dir,
93 IPC::Message* reply_msg,
94 int reschedule_count);
95 void DatabaseGetFileAttributes(const string16& vfs_file_name,
96 IPC::Message* reply_msg);
97 void DatabaseGetFileSize(const string16& vfs_file_name,
98 IPC::Message* reply_msg);
99
100 // Database tracker message handlers (file thread)
101 void DatabaseOpened(const string16& origin_identifier,
102 const string16& database_name,
103 const string16& description,
104 int64 estimated_size);
105 void DatabaseModified(const string16& origin_identifier,
106 const string16& database_name);
107 void DatabaseClosed(const string16& origin_identifier,
108 const string16& database_name);
109
110 // CookiePromptModalDialog response handler (io thread)
111 void AllowDatabaseResponse(IPC::Message* reply_msg,
112 ContentSetting content_setting);
113
114 // The database tracker for the current profile.
115 scoped_refptr<webkit_database::DatabaseTracker> db_tracker_;
116
117 // The sender to be used for sending out IPC messages.
118 IPC::Message::Sender* message_sender_;
119
120 // The handle of this process.
121 base::ProcessHandle process_handle_;
122
123 // True if and only if this instance was added as an observer
124 // to DatabaseTracker.
125 bool observer_added_;
126
127 // If true, all messages that are normally processed by this class
128 // will be silently discarded. This field should be set to true
129 // only when the corresponding renderer process is about to go away.
130 bool shutdown_;
131
132 // Keeps track of all DB connections opened by this renderer
133 webkit_database::DatabaseConnections database_connections_;
134
135 // Used to look up permissions at database creation time.
136 scoped_refptr<HostContentSettingsMap> host_content_settings_map_;
137 };
138
139 #endif // CHROME_BROWSER_RENDERER_HOST_DATABASE_DISPATCHER_HOST_H_
OLDNEW
« no previous file with comments | « chrome/browser/renderer_host/browser_render_process_host.cc ('k') | chrome/browser/renderer_host/database_dispatcher_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698