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

Side by Side Diff: content/browser/service_worker/service_worker_database.cc

Issue 1135743002: Check the size of ResourceRecords in ServiceWorkerDatabase::ReadRegistration() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: DCHECK in ServiceWorkerStorage::ReturnFoundRegistration() Created 5 years, 7 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/browser/service_worker/service_worker_database.h" 5 #include "content/browser/service_worker/service_worker_database.h"
6 6
7 #include "base/files/file_util.h" 7 #include "base/files/file_util.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 531
532 RegistrationData value; 532 RegistrationData value;
533 status = ReadRegistrationData(registration_id, origin, &value); 533 status = ReadRegistrationData(registration_id, origin, &value);
534 if (status != STATUS_OK) 534 if (status != STATUS_OK)
535 return status; 535 return status;
536 536
537 status = ReadResourceRecords(value.version_id, resources); 537 status = ReadResourceRecords(value.version_id, resources);
538 if (status != STATUS_OK) 538 if (status != STATUS_OK)
539 return status; 539 return status;
540 540
541 // ResourceRecord must contain the ServiceWorker's main script.
542 if (resources->empty())
543 return ServiceWorkerDatabase::STATUS_ERROR_CORRUPTED;
544
541 *registration = value; 545 *registration = value;
542 return STATUS_OK; 546 return STATUS_OK;
543 } 547 }
544 548
545 ServiceWorkerDatabase::Status ServiceWorkerDatabase::ReadRegistrationOrigin( 549 ServiceWorkerDatabase::Status ServiceWorkerDatabase::ReadRegistrationOrigin(
546 int64 registration_id, 550 int64 registration_id,
547 GURL* origin) { 551 GURL* origin) {
548 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 552 DCHECK(sequence_checker_.CalledOnValidSequencedThread());
549 DCHECK(origin); 553 DCHECK(origin);
550 554
(...skipping 25 matching lines...) Expand all
576 return STATUS_OK; 580 return STATUS_OK;
577 } 581 }
578 582
579 ServiceWorkerDatabase::Status ServiceWorkerDatabase::WriteRegistration( 583 ServiceWorkerDatabase::Status ServiceWorkerDatabase::WriteRegistration(
580 const RegistrationData& registration, 584 const RegistrationData& registration,
581 const std::vector<ResourceRecord>& resources, 585 const std::vector<ResourceRecord>& resources,
582 RegistrationData* old_registration, 586 RegistrationData* old_registration,
583 std::vector<int64>* newly_purgeable_resources) { 587 std::vector<int64>* newly_purgeable_resources) {
584 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 588 DCHECK(sequence_checker_.CalledOnValidSequencedThread());
585 DCHECK(old_registration); 589 DCHECK(old_registration);
590 DCHECK(!resources.empty());
586 Status status = LazyOpen(true); 591 Status status = LazyOpen(true);
587 old_registration->version_id = kInvalidServiceWorkerVersionId; 592 old_registration->version_id = kInvalidServiceWorkerVersionId;
588 if (status != STATUS_OK) 593 if (status != STATUS_OK)
589 return status; 594 return status;
590 595
591 leveldb::WriteBatch batch; 596 leveldb::WriteBatch batch;
592 BumpNextRegistrationIdIfNeeded(registration.registration_id, &batch); 597 BumpNextRegistrationIdIfNeeded(registration.registration_id, &batch);
593 BumpNextVersionIdIfNeeded(registration.version_id, &batch); 598 BumpNextVersionIdIfNeeded(registration.version_id, &batch);
594 599
595 PutUniqueOriginToBatch(registration.scope.GetOrigin(), &batch); 600 PutUniqueOriginToBatch(registration.scope.GetOrigin(), &batch);
(...skipping 856 matching lines...) Expand 10 before | Expand all | Expand 10 after
1452 1457
1453 void ServiceWorkerDatabase::HandleWriteResult( 1458 void ServiceWorkerDatabase::HandleWriteResult(
1454 const tracked_objects::Location& from_here, 1459 const tracked_objects::Location& from_here,
1455 Status status) { 1460 Status status) {
1456 if (status != STATUS_OK) 1461 if (status != STATUS_OK)
1457 Disable(from_here, status); 1462 Disable(from_here, status);
1458 ServiceWorkerMetrics::CountWriteDatabaseResult(status); 1463 ServiceWorkerMetrics::CountWriteDatabaseResult(status);
1459 } 1464 }
1460 1465
1461 } // namespace content 1466 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698