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
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_CHROMEOS_APP_MODE_KIOSK_EXTERNAL_UPDATE_VALIDATOR_H_
6 #define CHROME_BROWSER_CHROMEOS_APP_MODE_KIOSK_EXTERNAL_UPDATE_VALIDATOR_H_
10 #include "base/files/file_path.h"
11 #include "base/memory/weak_ptr.h"
12 #include "base/sequenced_task_runner.h"
13 #include "extensions/browser/sandboxed_unpacker.h"
15 namespace extensions
{
21 // Delegate class for KioskExternalUpdateValidator, derived class must support
23 class KioskExternalUpdateValidatorDelegate
{
25 virtual void OnExtenalUpdateUnpackSuccess(
26 const std::string
& app_id
,
27 const std::string
& version
,
28 const std::string
& min_browser_version
,
29 const base::FilePath
& temp_dir
) = 0;
30 virtual void OnExternalUpdateUnpackFailure(const std::string
& app_id
) = 0;
33 virtual ~KioskExternalUpdateValidatorDelegate() {}
36 // Unpacks the crx file of the kiosk app and validates its signature.
37 class KioskExternalUpdateValidator
38 : public extensions::SandboxedUnpackerClient
{
40 KioskExternalUpdateValidator(
41 const scoped_refptr
<base::SequencedTaskRunner
>& backend_task_runner
,
42 const extensions::CRXFileInfo
& file
,
43 const base::FilePath
& crx_unpack_dir
,
44 const base::WeakPtr
<KioskExternalUpdateValidatorDelegate
>& delegate
);
46 // Starts validating the external crx file.
50 ~KioskExternalUpdateValidator() override
;
52 // SandboxedUnpackerClient overrides.
53 void OnUnpackFailure(const extensions::CrxInstallError
& error
) override
;
54 void OnUnpackSuccess(const base::FilePath
& temp_dir
,
55 const base::FilePath
& extension_dir
,
56 const base::DictionaryValue
* original_manifest
,
57 const extensions::Extension
* extension
,
58 const SkBitmap
& install_icon
) override
;
60 // Task runner for executing file I/O tasks.
61 const scoped_refptr
<base::SequencedTaskRunner
> backend_task_runner_
;
63 // Information about the external crx file.
64 extensions::CRXFileInfo crx_file_
;
66 // The temporary directory used by SandBoxedUnpacker for unpacking extensions.
67 const base::FilePath crx_unpack_dir_
;
69 base::WeakPtr
<KioskExternalUpdateValidatorDelegate
> delegate_
;
71 DISALLOW_COPY_AND_ASSIGN(KioskExternalUpdateValidator
);
74 } // namespace chromeos
76 #endif // CHROME_BROWSER_CHROMEOS_APP_MODE_KIOSK_EXTERNAL_UPDATE_VALIDATOR_H_