1// Copyright 2013 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_COMMON_EXTENSIONS_MANIFEST_HANDLERS_APP_LAUNCH_INFO_H_ 6#define CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_APP_LAUNCH_INFO_H_ 7 8#include <string> 9#include <vector> 10 11#include "chrome/common/extensions/extension_constants.h" 12#include "extensions/common/extension.h" 13#include "extensions/common/manifest.h" 14#include "extensions/common/manifest_handler.h" 15#include "url/gurl.h" 16 17namespace extensions { 18 19// Container that holds the parsed app launch data. 20class AppLaunchInfo : public Extension::ManifestData { 21 public: 22 AppLaunchInfo(); 23 virtual ~AppLaunchInfo(); 24 25 // Get the local path inside the extension to use with the launcher. 26 static const std::string& GetLaunchLocalPath(const Extension* extension); 27 28 // Get the absolute web url to use with the launcher. 29 static const GURL& GetLaunchWebURL(const Extension* extension); 30 31 // The window type that an app's manifest specifies to launch into. 32 // This is not always the window type an app will open into, because 33 // users can override the way each app launches. See 34 // ExtensionPrefs::GetLaunchContainer(), which looks at a per-app pref 35 // to decide what container an app will launch in. 36 static LaunchContainer GetLaunchContainer( 37 const Extension* extension); 38 39 // The default size of the container when launching. Only respected for 40 // containers like panels and windows. 41 static int GetLaunchWidth(const Extension* extension); 42 static int GetLaunchHeight(const Extension* extension); 43 44 // Get the fully resolved absolute launch URL. 45 static GURL GetFullLaunchURL(const Extension* extension); 46 47 bool Parse(Extension* extension, base::string16* error); 48 49 private: 50 bool LoadLaunchURL(Extension* extension, base::string16* error); 51 bool LoadLaunchContainer(Extension* extension, base::string16* error); 52 void OverrideLaunchURL(Extension* extension, GURL override_url); 53 54 std::string launch_local_path_; 55 56 GURL launch_web_url_; 57 58 LaunchContainer launch_container_; 59 60 int launch_width_; 61 int launch_height_; 62 63 DISALLOW_COPY_AND_ASSIGN(AppLaunchInfo); 64}; 65 66// Parses all app launch related keys in the manifest. 67class AppLaunchManifestHandler : public ManifestHandler { 68 public: 69 AppLaunchManifestHandler(); 70 virtual ~AppLaunchManifestHandler(); 71 72 virtual bool Parse(Extension* extension, base::string16* error) OVERRIDE; 73 virtual bool AlwaysParseForType(Manifest::Type type) const OVERRIDE; 74 75 private: 76 virtual const std::vector<std::string> Keys() const OVERRIDE; 77 78 DISALLOW_COPY_AND_ASSIGN(AppLaunchManifestHandler); 79}; 80 81} // namespace extensions 82 83#endif // CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_APP_LAUNCH_INFO_H_ 84