Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / app_mode / kiosk_external_update_validator.h
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.
4
5 #ifndef CHROME_BROWSER_CHROMEOS_APP_MODE_KIOSK_EXTERNAL_UPDATE_VALIDATOR_H_
6 #define CHROME_BROWSER_CHROMEOS_APP_MODE_KIOSK_EXTERNAL_UPDATE_VALIDATOR_H_
7
8 #include <string>
9
10 #include "base/files/file_path.h"
11 #include "base/memory/weak_ptr.h"
12 #include "base/sequenced_task_runner.h"
13 #include "chrome/browser/extensions/sandboxed_unpacker.h"
14
15 namespace extensions {
16 class Extension;
17 }
18
19 namespace chromeos {
20
21 // Delegate class for KioskExternalUpdateValidator, derived class must support
22 // WeakPtr.
23 class KioskExternalUpdateValidatorDelegate {
24  public:
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;
31
32  protected:
33   virtual ~KioskExternalUpdateValidatorDelegate() {}
34 };
35
36 // Unpacks the crx file of the kiosk app and validates its signature.
37 class KioskExternalUpdateValidator
38     : public extensions::SandboxedUnpackerClient {
39  public:
40   KioskExternalUpdateValidator(
41       const scoped_refptr<base::SequencedTaskRunner>& backend_task_runner,
42       const std::string& app_id,
43       const base::FilePath& crx_path,
44       const base::FilePath& crx_unpack_dir,
45       const base::WeakPtr<KioskExternalUpdateValidatorDelegate>& delegate);
46
47   // Starts validating the external crx file.
48   void Start();
49
50  private:
51   virtual ~KioskExternalUpdateValidator();
52
53   // SandboxedUnpackerClient overrides.
54   virtual void OnUnpackFailure(const base::string16& error_message) override;
55   virtual void OnUnpackSuccess(const base::FilePath& temp_dir,
56                                const base::FilePath& extension_dir,
57                                const base::DictionaryValue* original_manifest,
58                                const extensions::Extension* extension,
59                                const SkBitmap& install_icon) override;
60
61   // Task runner for executing file I/O tasks.
62   const scoped_refptr<base::SequencedTaskRunner> backend_task_runner_;
63   std::string app_id_;
64
65   // The directory where the external crx file resides.
66   base::FilePath crx_dir_;
67   // The temporary directory used by SandBoxedUnpacker for unpacking extensions.
68   const base::FilePath crx_unpack_dir_;
69
70   base::WeakPtr<KioskExternalUpdateValidatorDelegate> delegate_;
71
72   DISALLOW_COPY_AND_ASSIGN(KioskExternalUpdateValidator);
73 };
74
75 }  // namespace chromeos
76
77 #endif  // CHROME_BROWSER_CHROMEOS_APP_MODE_KIOSK_EXTERNAL_UPDATE_VALIDATOR_H_