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

Side by Side Diff: chrome/browser/extensions/sandboxed_unpacker.cc

Issue 18690003: Abort SandboxedUnpacker::RewriteImageFiles on browser shutdown (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed comment Created 7 years, 5 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
« no previous file with comments | « chrome/browser/extensions/sandboxed_unpacker.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/extensions/sandboxed_unpacker.h" 5 #include "chrome/browser/extensions/sandboxed_unpacker.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/command_line.h" 11 #include "base/command_line.h"
12 #include "base/file_util.h" 12 #include "base/file_util.h"
13 #include "base/files/file_util_proxy.h" 13 #include "base/files/file_util_proxy.h"
14 #include "base/json/json_string_value_serializer.h" 14 #include "base/json/json_string_value_serializer.h"
15 #include "base/memory/scoped_handle.h" 15 #include "base/memory/scoped_handle.h"
16 #include "base/message_loop.h" 16 #include "base/message_loop.h"
17 #include "base/metrics/histogram.h" 17 #include "base/metrics/histogram.h"
18 #include "base/path_service.h" 18 #include "base/path_service.h"
19 #include "base/sequenced_task_runner.h" 19 #include "base/sequenced_task_runner.h"
20 #include "base/strings/utf_string_conversions.h" // TODO(viettrungluu): delete me. 20 #include "base/strings/utf_string_conversions.h" // TODO(viettrungluu): delete me.
21 #include "base/threading/sequenced_worker_pool.h"
21 #include "chrome/browser/extensions/extension_service.h" 22 #include "chrome/browser/extensions/extension_service.h"
22 #include "chrome/common/chrome_paths.h" 23 #include "chrome/common/chrome_paths.h"
23 #include "chrome/common/chrome_switches.h" 24 #include "chrome/common/chrome_switches.h"
24 #include "chrome/common/chrome_utility_messages.h" 25 #include "chrome/common/chrome_utility_messages.h"
25 #include "chrome/common/extensions/extension.h" 26 #include "chrome/common/extensions/extension.h"
26 #include "chrome/common/extensions/extension_file_util.h" 27 #include "chrome/common/extensions/extension_file_util.h"
27 #include "chrome/common/extensions/extension_l10n_util.h" 28 #include "chrome/common/extensions/extension_l10n_util.h"
28 #include "chrome/common/extensions/extension_manifest_constants.h" 29 #include "chrome/common/extensions/extension_manifest_constants.h"
29 #include "chrome/common/extensions/extension_manifest_constants.h" 30 #include "chrome/common/extensions/extension_manifest_constants.h"
30 #include "chrome/common/extensions/unpacker.h" 31 #include "chrome/common/extensions/unpacker.h"
(...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after
667 ERROR_REMOVING_OLD_IMAGE_FILE, 668 ERROR_REMOVING_OLD_IMAGE_FILE,
668 l10n_util::GetStringFUTF16( 669 l10n_util::GetStringFUTF16(
669 IDS_EXTENSION_PACKAGE_INSTALL_ERROR, 670 IDS_EXTENSION_PACKAGE_INSTALL_ERROR,
670 ASCIIToUTF16("ERROR_REMOVING_OLD_IMAGE_FILE"))); 671 ASCIIToUTF16("ERROR_REMOVING_OLD_IMAGE_FILE")));
671 return false; 672 return false;
672 } 673 }
673 } 674 }
674 675
675 // Write our parsed images back to disk as well. 676 // Write our parsed images back to disk as well.
676 for (size_t i = 0; i < images.size(); ++i) { 677 for (size_t i = 0; i < images.size(); ++i) {
678 if (BrowserThread::GetBlockingPool()->IsShutdownInProgress()) {
679 // Abort package installation if shutdown was initiated, crbug.com/235525
680 ReportFailure(
681 ABORTED_DUE_TO_SHUTDOWN,
682 l10n_util::GetStringFUTF16(
683 IDS_EXTENSION_PACKAGE_INSTALL_ERROR,
684 ASCIIToUTF16("ABORTED_DUE_TO_SHUTDOWN")));
685 return false;
686 }
687
677 const SkBitmap& image = images[i].a; 688 const SkBitmap& image = images[i].a;
678 base::FilePath path_suffix = images[i].b; 689 base::FilePath path_suffix = images[i].b;
679 if (path_suffix.IsAbsolute() || path_suffix.ReferencesParent()) { 690 if (path_suffix.IsAbsolute() || path_suffix.ReferencesParent()) {
680 // Invalid path for bitmap image. 691 // Invalid path for bitmap image.
681 ReportFailure( 692 ReportFailure(
682 INVALID_PATH_FOR_BITMAP_IMAGE, 693 INVALID_PATH_FOR_BITMAP_IMAGE,
683 l10n_util::GetStringFUTF16( 694 l10n_util::GetStringFUTF16(
684 IDS_EXTENSION_PACKAGE_INSTALL_ERROR, 695 IDS_EXTENSION_PACKAGE_INSTALL_ERROR,
685 ASCIIToUTF16("INVALID_PATH_FOR_BITMAP_IMAGE"))); 696 ASCIIToUTF16("INVALID_PATH_FOR_BITMAP_IMAGE")));
686 return false; 697 return false;
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
792 803
793 void SandboxedUnpacker::Cleanup() { 804 void SandboxedUnpacker::Cleanup() {
794 DCHECK(unpacker_io_task_runner_->RunsTasksOnCurrentThread()); 805 DCHECK(unpacker_io_task_runner_->RunsTasksOnCurrentThread());
795 if (!temp_dir_.Delete()) { 806 if (!temp_dir_.Delete()) {
796 LOG(WARNING) << "Can not delete temp directory at " 807 LOG(WARNING) << "Can not delete temp directory at "
797 << temp_dir_.path().value(); 808 << temp_dir_.path().value();
798 } 809 }
799 } 810 }
800 811
801 } // namespace extensions 812 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/sandboxed_unpacker.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698