Home | History | Annotate | Download | only in extensions
      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
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_EXTENSIONS_STARTUP_HELPER_H_
      6 #define CHROME_BROWSER_EXTENSIONS_STARTUP_HELPER_H_
      7 
      8 #include "base/memory/ref_counted.h"
      9 #include "chrome/browser/extensions/pack_extension_job.h"
     10 
     11 class CommandLine;
     12 class Profile;
     13 
     14 namespace extensions {
     15 
     16 // Initialization helpers for various Extension startup actions.
     17 class StartupHelper : public PackExtensionJob::Client {
     18  public:
     19   StartupHelper();
     20   virtual ~StartupHelper();
     21 
     22   virtual void OnPackSuccess(
     23       const base::FilePath& crx_path,
     24       const base::FilePath& output_private_key_path) OVERRIDE;
     25   virtual void OnPackFailure(const std::string& error_message,
     26                              ExtensionCreator::ErrorType type) OVERRIDE;
     27 
     28   // Handle --pack-extension flag from the |cmd_line| by packing the specified
     29   // extension. Returns false if the pack job failed.
     30   bool PackExtension(const CommandLine& cmd_line);
     31 
     32   // Validates a crx at the path given by the --validate-extension flag - can
     33   // it be installed? Returns true if the crx is valid, or false otherwise.
     34   // If the return value is false, a description of the problem may be written
     35   // into |error|.
     36   bool ValidateCrx(const CommandLine& cmd_line, std::string* error);
     37 
     38   // Handle --uninstall-extension flag from the |cmd_line| by uninstalling the
     39   // specified extension from |profile|. Returns false if the uninstall job
     40   // could not be started.
     41   bool UninstallExtension(const CommandLine& cmd_line, Profile* profile);
     42 
     43   // Handle --install-from-webstore flag from |cmd_line| by downloading
     44   // metadata from the webstore for the given id, prompting the user to
     45   // confirm, and then downloading the crx and installing it.
     46   bool InstallFromWebstore(const CommandLine& cmd_line, Profile* profile);
     47 
     48   // Handle --limited-install-from-webstore flag from |cmd_line| by downloading
     49   // metadata from the webstore for the given id, prompting the user to
     50   // confirm, and then downloading the crx and installing it.
     51   // This whole process is only kicked off by this function and completed
     52   // asynchronously unlike InstallFromWebstore which finishes everything before
     53   // returning.
     54   void LimitedInstallFromWebstore(const CommandLine& cmd_line, Profile* profile,
     55                                   base::Callback<void()> done_callback);
     56 
     57   // Maps the command line argument to the extension id. Returns an empty string
     58   // in the case when there is no mapping.
     59   std::string WebStoreIdFromLimitedInstallCmdLine(const CommandLine& cmd_line);
     60  private:
     61   scoped_refptr<PackExtensionJob> pack_job_;
     62   bool pack_job_succeeded_;
     63 
     64   DISALLOW_COPY_AND_ASSIGN(StartupHelper);
     65 };
     66 
     67 }  // namespace extensions
     68 
     69 #endif  // CHROME_BROWSER_EXTENSIONS_STARTUP_HELPER_H_
     70