Index: chrome/common/web_apps.h |
diff --git a/chrome/common/web_apps.h b/chrome/common/web_apps.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8ecfdb609933ad73b29bf31419f12c40f6b6311b |
--- /dev/null |
+++ b/chrome/common/web_apps.h |
@@ -0,0 +1,105 @@ |
+// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROME_COMMON_WEB_APPS_H_ |
+#define CHROME_COMMON_WEB_APPS_H_ |
+#pragma once |
+ |
+#include <string> |
+#include <vector> |
+ |
+#include "base/string16.h" |
+#include "googleurl/src/gurl.h" |
+#include "gfx/size.h" |
+#include "third_party/skia/include/core/SkBitmap.h" |
+ |
+namespace WebKit { |
+class WebDocument; |
+class WebFrame; |
+} |
+ |
+class DictionaryValue; |
+ |
+// Structure used when installing a web page as an app. |
+struct WebApplicationInfo { |
+ struct IconInfo { |
+ GURL url; |
+ int width; |
+ int height; |
+ SkBitmap data; |
+ }; |
+ |
+ static const char kInvalidDefinitionURL[]; |
+ static const char kInvalidLaunchURL[]; |
+ static const char kInvalidURL[]; |
+ static const char kInvalidIconSize[]; |
+ static const char kInvalidIconURL[]; |
+ |
+ WebApplicationInfo(); |
+ ~WebApplicationInfo(); |
+ |
+ // URL to a manifest that defines the application. If specified, all other |
+ // attributes are derived from this manifest, and the manifest is the unique |
+ // ID of the application. |
+ GURL manifest_url; |
+ |
+ // Title of the application. |
+ string16 title; |
+ |
+ // Description of the application. |
+ string16 description; |
+ |
+ // The launch URL for the app. |
+ GURL app_url; |
+ |
+ // Set of available icons. |
+ std::vector<IconInfo> icons; |
+ |
+ // The permissions the app requests. Only supported with manifest-based apps. |
+ std::vector<std::string> permissions; |
+ |
+ // Set of URLs that comprise the app. Only supported with manifest-based apps. |
+ // All these must be of the same origin as manifest_url. |
+ std::vector<GURL> urls; |
+ |
+ // The type of launch container to use with the app. Currently supported |
+ // values are 'tab' and 'panel'. Only supported with manifest-based apps. |
+ std::string launch_container; |
+}; |
+ |
+ |
+// Parses an icon size. An icon size must match the following regex: |
+// [1-9][0-9]*x[1-9][0-9]*. |
+// If the input couldn't be parsed, a size with a width/height < 0 is returned. |
+gfx::Size ParseIconSize(const string16& text); |
+ |
+// Parses the icon's size attribute as defined in the HTML 5 spec. Returns true |
+// on success, false on errors. On success either all the sizes specified in |
+// the attribute are added to sizes, or is_any is set to true. |
+// |
+// You shouldn't have a need to invoke this directly, it's public for testing. |
+bool ParseIconSizes(const string16& text, std::vector<gfx::Size>* sizes, |
+ bool* is_any); |
+ |
+// Parses |web_app| information out of the document in frame. Returns true on |
+// success, or false and |error| on failure. Note that the document may contain |
+// no web application information, in which case |web_app| is unchanged and the |
+// function returns true. |
+// |
+// Documents can also contain a link to a application 'definition'. In this case |
+// web_app will have manifest_url set and nothing else. The caller must fetch |
+// this URL and pass the result to ParseWebAppFromDefinitionFile() for further |
+// processing. |
+bool ParseWebAppFromWebDocument(WebKit::WebFrame* frame, |
+ WebApplicationInfo* web_app, |
+ string16* error); |
+ |
+// Parses |web_app| information out of |definition|. Returns true on success, or |
+// false and |error| on failure. This function assumes that |web_app| has a |
+// valid manifest_url. |
+bool ParseWebAppFromDefinitionFile(const DictionaryValue& definition, |
+ WebApplicationInfo* web_app, |
+ string16* error); |
+ |
+#endif // CHROME_COMMON_WEB_APPS_H_ |