среда, 19 февраля 2014 г.

Разрешения

Шаг вправо, шаг влево – побег
Прыжок на месте – провокация

На каждый чих вашему расширению требуется разрешение. По умолчанию – нельзя практически ничего.

При установке расширения пользователь уведомляется о его аппетитах и может сделать осознанный выбор (хаха 3 раза), готов ли он предоставить требуемое. Если не готов, если расширение просит слишком много, а его автор или источник получения не внушает доверия, установку можно прервать. Кроме того, в любой момент на вкладке расширений можно проверить какие разрешения затребованы расширением и отключить его, если возникли какие-то подозрения.

На практике, большинство пользователей ставят расширения не читая списка его требований, а если вчитаться и задуматься о возможных последствиях, то придется отключить практически все, уж очень подозрительно они выглядят.

Знакомство со списком всех возможных разрешений полезно хотя бы тем, что он наглядно иллюстрирует потенциальные возможности – что вообще можно делать с помощью расширений

Нужно иметь ввиду, что некоторые возможности являются экспериментальными, их распространение через Google Store ограничено и в любой момент в API могут внести изменения или даже прекратить его поддержку.

Параметр Описание
[scheme]:[host]/* Требуется чтобы взаимодействовать с кодом на страницах, чей URL совпадает с указанной маской. Например для кросс-сайтовых запросов
activeTab Позволяет расширению получить временный доступ к активной вкладке. Чтобы получить доступ пользователь должен явно активировать расширение, например путем нажатия его иконки на панели инструментов.
alarms Разрешает доступ к chrome.alarms API – создание разного рода “будильников”, напоминаний.
background Разрешает работу расширения в фоновом режиме, даже когда браузер не запущен
bookmarks Дает доступ к закладкам
browsingData Позволяет работать с chrome.browsingData API – автоматически удалять старые, ненужные данные. Полезность этого API для меня под большим вопросом
clipboardRead Позволяет получение данных из буфера обмена (paste)
clipboardWrite Позволяет записывать данные в буфер обмена (cut,copy)
contentSettings Разрешает работу с chrome.contentSettings API. С его помощью можно разрешать или запрещать использование cookies, JavaScript, and plug-ins на сайтах.
contextMenus Добавление своих элементов в контекстное меню
cookies Управление cookies
debugger Может быть полезно при отладке расширения на мобильных устройствах. Отладка осуществляется только при подключении через USB кабель
declarativeContent Разрешает использование chrome.declarativeContent API. Довольно экзотическая штука, которая показывает иконку Page Action в зависимости от контента страницы. Например можно задать правило, по которому иконка вашего расширения будет показана только для страниц на которых присутствует тег video.
Экспериментальная возможность.
declarativeWebRequest Позволяет перехватывать, блокировать или изменять запросы “на лету”.
Экспериментальная возможность.
desktopCapture Разрешает chrome.desktopCapture API. Позволяет делать снимок экрана, отдельного окна или вкладки.
Экспериментальная возможность.
dns Разрешает chrome.dns API – возможность настолько экспериментальная что на сайте гугла нет описания
downloads Позволяет расширению работать с загрузками
experimental Разрешает работу с chrome.experimental.* API. Кроме установки этого разрешения вам потребуется специальная версия браузера, в которой разрешено использование этих специальных возможностей
fileBrowserHandler API для выбора файлов для загрузки, работает только на Chrome OS
fontSettings Разрешает манипуляции со шрифтами
gcm Разрешает использование  Google Cloud Messaging for Android. Экспериментальная возможность
geolocation Разрешает работу с Geolocation API
history Доступ к истории посещений
identity Авторизация через OAuth2
idle Возможность обнаружения перехода компьютера в ждущий режим. Например чтобы выполнять какие-то ресурсоемкие задачи пока им никто не пользуется
idltest Что-то экспериментальное и жутко секретное. А скорей всего умершее в экспериментальном статусе
infobars Позволяет добавить информационную панель под ярлычками вкладок. Экспериментальное
location Еще один вариант геолокации. Экспериментальный и завязанный на Chrome
management Разрешает использование API для управления приложениями и расширениями
notifications Разрешает работу с уведомлениями
pageCapture Позволяет сохранить страницу в одном файле формата MHTML
power Позволяет предотвратить переход системы в спящий режим
privacy Позволяет менять настройки приватности
processes Управление процессами браузера. Экспериментальная возможность.
proxy Управление настройками прокси
pushMessaging Позволяет использовать Google Cloud Messaging.
sessions Экспериментальная возможность. Только для разработчиков
signedInDevices Экспериментальная возможность. Только для разработчиков
storage Разрешает chrome.storage API – аналог localStorage но несколько больше возможностей
system.cpu Получение информации о процессоре и загрузке системы
system.display Получение информации о мониторе
system.memory Получение информации о памяти
system.storage Получение информации о накопителях и их подключении/отключении
tabCapture Взаимодействие с потоковыми данными (аудио, видео) на вкладках.
tabs Какая-то особо изощренная работа со вкладками. В чем именно она заключается понять не удалось
topSites Получение списка наиболее посещаемых пользователем сайтов.
tts Преобразование текста в речь.
ttsEngine Продвинутое преобразование текста в речь.
unlimitedStorage Дает неограниченный размер хранимых данных (обычное localStorage только 5Мб). С оговорками.
webNavigation Получение уведомлений о событиях связанных с загрузкой данных
webRequest Тоже самое что webNavigation, но на более более продвинутом уровне
webRequestBlocking Тоже самое что webRequest + возможность прерывать, блокировать и модифицировать запросы

Пример

"permissions": [
"tabs",
"bookmarks",
"http://www.blogger.com/",
"http://*.google.com/",
"unlimitedStorage"
],

Комментариев нет:

Отправить комментарий