مانیفست برای ذخیره سازی مدیریت شده

برخلاف مناطق ذخیره‌سازی local و sync ، فضای ذخیره‌سازی managed نیاز دارد که ساختار آن به‌عنوان طرحواره JSON اعلام شود و کاملاً توسط Chrome تأیید شود. این طرح باید در فایلی ذخیره شود که با ویژگی "managed_schema" کلید مانیفست "storage" نشان داده شده است و خط‌مشی‌های سازمانی پشتیبانی شده توسط برنامه افزودنی را اعلام می‌کند.

خط‌مشی‌ها مشابه گزینه‌ها هستند، اما توسط یک مدیر سیستم برای برنامه‌های افزودنی نصب شده روی خط‌مشی پیکربندی می‌شوند و اجازه می‌دهند برنامه افزودنی برای همه کاربران یک سازمان از پیش پیکربندی شود. ببینید Chrome چگونه خط‌مشی‌ها را برای نمونه‌هایی از خود Chrome مدیریت می‌کند .

پس از اعلام خط‌مشی‌ها، می‌توان آن‌ها را از Storage.managed API خواند. اجرای خط‌مشی‌های پیکربندی‌شده توسط سرپرست به برنامه افزودنی بستگی دارد.

نمونه manifest.json

ویژگی storage.managed_schema فایلی را در پسوند نشان می دهد که شامل طرح خط مشی است.

{
  "name": "My enterprise extension",
  "storage": {
    "managed_schema": "schema.json"
  },
  ...
}

سپس Chrome این خط‌مشی‌ها را از سیستم عامل اصلی و از Google Apps برای کاربرانی که به سیستم وارد شده‌اند بارگیری می‌کند. هر زمان که تغییر خط مشی شناسایی شود، رویداد storage.onChanged فعال می شود. می‌توانید خط‌مشی‌هایی را که Chrome بارگیری کرده است در chrome://policy تأیید کنید.

قالب طرحواره

قالب JSON Schema دارای برخی الزامات اضافی از Chrome است:

  • طرحواره سطح بالا باید دارای نوع object باشد.
  • object سطح بالا نمی تواند additionalProperties داشته باشد. properties اعلام‌شده خط‌مشی‌های این برنامه افزودنی هستند.
  • هر طرحواره باید دارای یک مقدار $ref یا دقیقاً یک type باشد.

اگر این طرح نامعتبر باشد، Chrome برنامه افزودنی را بارگیری نمی‌کند و دلیل تأیید نشدن طرح را نشان می‌دهد. اگر مقدار خط مشی با طرح مطابقت نداشته باشد، توسط storage.managed API منتشر نخواهد شد.

طرح واره نمونه

{
  "type": "object",

  // "properties" maps an optional key of this object to its schema. At the
  // top-level object, these keys are the policy names supported.
  "properties": {

    // The policy name "AutoSave" is mapped to its schema, which in this case
    // declares it as a simple boolean value.
    // "title" and "description" are optional and are used to show a
    // user-friendly name and documentation to the administrator.
    "AutoSave": {
      "title": "Automatically save changes.",
      "description": "If set to true then changes will be automatically saved.",
      "type": "boolean"
    },

    // Other simple types supported include "integer", "string" and "number".
    "PollRefreshRate": {
      "type": "integer"
    },

    "DefaultServiceUrl": {
      "type": "string"
    },

    // "array" is a list of items that conform to another schema, described
    // in "items". An example to this schema is [ "one", "two" ].
    "ServiceUrls": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },

    // A more complex example that describes a list of bookmarks. Each bookmark
    // has a "title", and can have a "url" or a list of "children" bookmarks.
    // The "id" attribute is used to name a schema, and other schemas can reuse
    // it using the "$ref" attribute.
    "Bookmarks": {
      "type": "array",
      "id": "ListOfBookmarks",
      "items": {
        "type": "object",
        "properties": {
          "title": { "type": "string" },
          "url": { "type": "string" },
          "children": { "$ref": "ListOfBookmarks" }
        }
      }
    },

    // An "object" can have known properties listed as "properties", and can
    // optionally have "additionalProperties" indicating a schema to apply to
    // keys that aren't found in "properties".
    // This example policy could map a URL to its settings. An example value:
    // {
    //   "youtube.com": {
    //     "blocklisted": true
    //   },
    //   "google.com": {
    //     "bypass_proxy": true
    //   }
    // }
    "SettingsForUrls": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "blocklisted": { "type": "boolean" },
          "bypass_proxy": { "type": "boolean" }
        }
      }
    }
  }
}