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

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

Issue 507014: Adding methods that will be used by the quota management UI.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 "chrome/browser/renderer_host/database_dispatcher_host.h" 5 #include "chrome/browser/renderer_host/database_dispatcher_host.h"
6 6
7 #if defined(OS_POSIX) 7 #if defined(OS_POSIX)
8 #include "base/file_descriptor_posix.h" 8 #include "base/file_descriptor_posix.h"
9 #endif 9 #endif
10 10
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 } 60 }
61 } 61 }
62 62
63 void DatabaseDispatcherHost::AddObserver() { 63 void DatabaseDispatcherHost::AddObserver() {
64 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); 64 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE));
65 db_tracker_->AddObserver(this); 65 db_tracker_->AddObserver(this);
66 } 66 }
67 67
68 void DatabaseDispatcherHost::RemoveObserver() { 68 void DatabaseDispatcherHost::RemoveObserver() {
69 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); 69 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE));
70
71 // If the renderer process died without closing all databases,
72 // then we need to manually close those connections
73 db_tracker_->CloseDatabases(database_connections_);
74 database_connections_.RemoveAllConnections();
75
70 db_tracker_->RemoveObserver(this); 76 db_tracker_->RemoveObserver(this);
71 } 77 }
72 78
73 bool DatabaseDispatcherHost::OnMessageReceived( 79 bool DatabaseDispatcherHost::OnMessageReceived(
74 const IPC::Message& message, bool* message_was_ok) { 80 const IPC::Message& message, bool* message_was_ok) {
75 DCHECK(!shutdown_); 81 DCHECK(!shutdown_);
76 *message_was_ok = true; 82 *message_was_ok = true;
77 bool handled = true; 83 bool handled = true;
78 IPC_BEGIN_MESSAGE_MAP_EX(DatabaseDispatcherHost, message, *message_was_ok) 84 IPC_BEGIN_MESSAGE_MAP_EX(DatabaseDispatcherHost, message, *message_was_ok)
79 IPC_MESSAGE_HANDLER(ViewHostMsg_DatabaseOpenFile, OnDatabaseOpenFile) 85 IPC_MESSAGE_HANDLER(ViewHostMsg_DatabaseOpenFile, OnDatabaseOpenFile)
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 estimated_size)); 304 estimated_size));
299 } 305 }
300 306
301 void DatabaseDispatcherHost::DatabaseOpened(const string16& origin_identifier, 307 void DatabaseDispatcherHost::DatabaseOpened(const string16& origin_identifier,
302 const string16& database_name, 308 const string16& database_name,
303 const string16& description, 309 const string16& description,
304 int64 estimated_size) { 310 int64 estimated_size) {
305 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); 311 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE));
306 int64 database_size = 0; 312 int64 database_size = 0;
307 int64 space_available = 0; 313 int64 space_available = 0;
308 AddAccessedOrigin(origin_identifier); 314 database_connections_.AddConnection(origin_identifier, database_name);
309 db_tracker_->DatabaseOpened(origin_identifier, database_name, description, 315 db_tracker_->DatabaseOpened(origin_identifier, database_name, description,
310 estimated_size, &database_size, &space_available); 316 estimated_size, &database_size, &space_available);
311 ChromeThread::PostTask( 317 ChromeThread::PostTask(
312 ChromeThread::IO, FROM_HERE, 318 ChromeThread::IO, FROM_HERE,
313 NewRunnableMethod(this, 319 NewRunnableMethod(this,
314 &DatabaseDispatcherHost::SendMessage, 320 &DatabaseDispatcherHost::SendMessage,
315 new ViewMsg_DatabaseUpdateSize( 321 new ViewMsg_DatabaseUpdateSize(
316 origin_identifier, database_name, 322 origin_identifier, database_name,
317 database_size, space_available))); 323 database_size, space_available)));
318 } 324 }
319 325
320 void DatabaseDispatcherHost::OnDatabaseModified( 326 void DatabaseDispatcherHost::OnDatabaseModified(
321 const string16& origin_identifier, 327 const string16& origin_identifier,
322 const string16& database_name) { 328 const string16& database_name) {
323 ChromeThread::PostTask( 329 ChromeThread::PostTask(
324 ChromeThread::FILE, FROM_HERE, 330 ChromeThread::FILE, FROM_HERE,
325 NewRunnableMethod(this, 331 NewRunnableMethod(this,
326 &DatabaseDispatcherHost::DatabaseModified, 332 &DatabaseDispatcherHost::DatabaseModified,
327 origin_identifier, 333 origin_identifier,
328 database_name)); 334 database_name));
329 } 335 }
330 336
331 void DatabaseDispatcherHost::DatabaseModified(const string16& origin_identifier, 337 void DatabaseDispatcherHost::DatabaseModified(const string16& origin_identifier,
332 const string16& database_name) { 338 const string16& database_name) {
333 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); 339 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE));
334 if (!HasAccessedOrigin(origin_identifier)) { 340 if (!database_connections_.IsDatabaseOpened(
341 origin_identifier, database_name)) {
335 ReceivedBadMessage(ViewHostMsg_DatabaseModified::ID); 342 ReceivedBadMessage(ViewHostMsg_DatabaseModified::ID);
336 return; 343 return;
337 } 344 }
338 345
339 db_tracker_->DatabaseModified(origin_identifier, database_name); 346 db_tracker_->DatabaseModified(origin_identifier, database_name);
340 } 347 }
341 348
342 void DatabaseDispatcherHost::OnDatabaseClosed(const string16& origin_identifier, 349 void DatabaseDispatcherHost::OnDatabaseClosed(const string16& origin_identifier,
343 const string16& database_name) { 350 const string16& database_name) {
344 ChromeThread::PostTask( 351 ChromeThread::PostTask(
345 ChromeThread::FILE, FROM_HERE, 352 ChromeThread::FILE, FROM_HERE,
346 NewRunnableMethod(this, 353 NewRunnableMethod(this,
347 &DatabaseDispatcherHost::DatabaseClosed, 354 &DatabaseDispatcherHost::DatabaseClosed,
348 origin_identifier, 355 origin_identifier,
349 database_name)); 356 database_name));
350 } 357 }
351 358
352 void DatabaseDispatcherHost::DatabaseClosed(const string16& origin_identifier, 359 void DatabaseDispatcherHost::DatabaseClosed(const string16& origin_identifier,
353 const string16& database_name) { 360 const string16& database_name) {
354 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); 361 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE));
355 if (!HasAccessedOrigin(origin_identifier)) { 362 if (!database_connections_.IsDatabaseOpened(
363 origin_identifier, database_name)) {
356 ReceivedBadMessage(ViewHostMsg_DatabaseClosed::ID); 364 ReceivedBadMessage(ViewHostMsg_DatabaseClosed::ID);
357 return; 365 return;
358 } 366 }
359 367
360 db_tracker_->DatabaseClosed(origin_identifier, database_name); 368 db_tracker_->DatabaseClosed(origin_identifier, database_name);
369 database_connections_.RemoveConnection(origin_identifier, database_name);
361 } 370 }
362 371
363 void DatabaseDispatcherHost::OnDatabaseSizeChanged( 372 void DatabaseDispatcherHost::OnDatabaseSizeChanged(
364 const string16& origin_identifier, 373 const string16& origin_identifier,
365 const string16& database_name, 374 const string16& database_name,
366 int64 database_size, 375 int64 database_size,
367 int64 space_available) { 376 int64 space_available) {
368 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); 377 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE));
369 if (HasAccessedOrigin(origin_identifier)) { 378 if (database_connections_.IsOriginUsed(origin_identifier)) {
370 ChromeThread::PostTask( 379 ChromeThread::PostTask(
371 ChromeThread::IO, FROM_HERE, 380 ChromeThread::IO, FROM_HERE,
372 NewRunnableMethod(this, 381 NewRunnableMethod(this,
373 &DatabaseDispatcherHost::SendMessage, 382 &DatabaseDispatcherHost::SendMessage,
374 new ViewMsg_DatabaseUpdateSize( 383 new ViewMsg_DatabaseUpdateSize(
375 origin_identifier, database_name, 384 origin_identifier, database_name,
376 database_size, space_available))); 385 database_size, space_available)));
377 } 386 }
378 } 387 }
379
380 void DatabaseDispatcherHost::AddAccessedOrigin(
381 const string16& origin_identifier) {
382 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE));
383 accessed_origins_.insert(origin_identifier);
384 }
385
386 bool DatabaseDispatcherHost::HasAccessedOrigin(
387 const string16& origin_identifier) {
388 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE));
389 return (accessed_origins_.find(origin_identifier) != accessed_origins_.end());
390 }
OLDNEW
« no previous file with comments | « chrome/browser/renderer_host/database_dispatcher_host.h ('k') | webkit/database/database_connections.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698