diff options
Diffstat (limited to 'chrome/common/extensions')
17 files changed, 581 insertions, 55 deletions
diff --git a/chrome/common/extensions/api/_permission_features.json b/chrome/common/extensions/api/_permission_features.json index 63804f3..425f59e 100644 --- a/chrome/common/extensions/api/_permission_features.json +++ b/chrome/common/extensions/api/_permission_features.json @@ -154,6 +154,9 @@ "okddffdblfhhnmhodogpojmfkjmhinfp" // HTerm dev ] }, + "topSites": { + "extension_types": ["extension", "packaged_app"] + }, "tts": { "extension_types": ["extension", "packaged_app", "platform_app"] }, diff --git a/chrome/common/extensions/api/extension_api.cc b/chrome/common/extensions/api/extension_api.cc index 7c55165..91b785b 100644 --- a/chrome/common/extensions/api/extension_api.cc +++ b/chrome/common/extensions/api/extension_api.cc @@ -116,7 +116,6 @@ ExtensionAPI::ExtensionAPI() { IDR_EXTENSION_API_JSON_EXPERIMENTAL_SERIAL, IDR_EXTENSION_API_JSON_EXPERIMENTAL_SOCKET, IDR_EXTENSION_API_JSON_EXPERIMENTAL_SPEECHINPUT, - IDR_EXTENSION_API_JSON_EXPERIMENTAL_TOPSITES, IDR_EXTENSION_API_JSON_EXPERIMENTAL_WEBREQUEST, IDR_EXTENSION_API_JSON_EXTENSION, IDR_EXTENSION_API_JSON_FILEBROWSERHANDLER, @@ -142,6 +141,7 @@ ExtensionAPI::ExtensionAPI() { IDR_EXTENSION_API_JSON_TABS, IDR_EXTENSION_API_JSON_TERMINALPRIVATE, IDR_EXTENSION_API_JSON_TEST, + IDR_EXTENSION_API_JSON_TOPSITES, IDR_EXTENSION_API_JSON_TTS, IDR_EXTENSION_API_JSON_TTSENGINE, IDR_EXTENSION_API_JSON_TYPES, diff --git a/chrome/common/extensions/api/experimental.topSites.json b/chrome/common/extensions/api/topSites.json index 6f247e7..e220447 100644 --- a/chrome/common/extensions/api/experimental.topSites.json +++ b/chrome/common/extensions/api/topSites.json @@ -4,9 +4,18 @@ [ { - "namespace": "experimental.topSites", - "nodoc": true, - "types": [], + "namespace": "topSites", + "types": [ + { + "id": "MostVisitedURL", + "type": "object", + "description": "An object encapsulating a most visited URL, such as the URLs on the new tab page.", + "properties": { + "url": {"type": "string", "description": "The most visited URL."}, + "title": {"type": "string", "description": "The title of the page"} + } + } + ], "functions": [ { "name": "get", @@ -20,19 +29,7 @@ { "type": "array", "name": "data", - "items": { - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "Page title" - }, - "url": { - "type": "string", - "description": "Page url" - } - } - } + "items": {"$ref": "MostVisitedURL"} } ] } diff --git a/chrome/common/extensions/docs/api_index.html b/chrome/common/extensions/docs/api_index.html index ca3c988..a54cadf 100644 --- a/chrome/common/extensions/docs/api_index.html +++ b/chrome/common/extensions/docs/api_index.html @@ -221,7 +221,7 @@ so that extensions can interact with the browser. Here are the supported chrome.* APIs: </p> <ul> - <li><a href="bookmarks.html" js="">bookmarks</a></li><li><a href="browserAction.html" js="">browserAction</a></li><li><a href="browsingData.html" js="">browsingData</a></li><li><a href="contentSettings.html" js="">contentSettings</a></li><li><a href="contextMenus.html" js="">contextMenus</a></li><li><a href="cookies.html" js="">cookies</a></li><li><a href="debugger.html" js="">debugger</a></li><li><a href="extension.html" js="">extension</a></li><li><a href="fileBrowserHandler.html" js="">fileBrowserHandler</a></li><li><a href="history.html" js="">history</a></li><li><a href="i18n.html" js="">i18n</a></li><li><a href="idle.html" js="">idle</a></li><li><a href="input.ime.html" js="">input.ime</a></li><li><a href="management.html" js="">management</a></li><li><a href="omnibox.html" js="">omnibox</a></li><li><a href="pageAction.html" js="">pageAction</a></li><li><a href="pageCapture.html" js="">pageCapture</a></li><li><a href="permissions.html" js="">permissions</a></li><li><a href="privacy.html" js="">privacy</a></li><li><a href="proxy.html" js="">proxy</a></li><li><a href="storage.html" js="">storage</a></li><li><a href="tabs.html" js="">tabs</a></li><li><a href="tts.html" js="">tts</a></li><li><a href="ttsEngine.html" js="">ttsEngine</a></li><li><a href="types.html" js="">types</a></li><li><a href="webNavigation.html" js="">webNavigation</a></li><li><a href="webRequest.html" js="">webRequest</a></li><li><a href="webstore.html" js="">webstore</a></li><li><a href="windows.html" js="">windows</a></li> + <li><a href="bookmarks.html" js="">bookmarks</a></li><li><a href="browserAction.html" js="">browserAction</a></li><li><a href="browsingData.html" js="">browsingData</a></li><li><a href="contentSettings.html" js="">contentSettings</a></li><li><a href="contextMenus.html" js="">contextMenus</a></li><li><a href="cookies.html" js="">cookies</a></li><li><a href="debugger.html" js="">debugger</a></li><li><a href="extension.html" js="">extension</a></li><li><a href="fileBrowserHandler.html" js="">fileBrowserHandler</a></li><li><a href="history.html" js="">history</a></li><li><a href="i18n.html" js="">i18n</a></li><li><a href="idle.html" js="">idle</a></li><li><a href="input.ime.html" js="">input.ime</a></li><li><a href="management.html" js="">management</a></li><li><a href="omnibox.html" js="">omnibox</a></li><li><a href="pageAction.html" js="">pageAction</a></li><li><a href="pageCapture.html" js="">pageCapture</a></li><li><a href="permissions.html" js="">permissions</a></li><li><a href="privacy.html" js="">privacy</a></li><li><a href="proxy.html" js="">proxy</a></li><li><a href="storage.html" js="">storage</a></li><li><a href="tabs.html" js="">tabs</a></li><li><a href="topSites.html" js="">topSites</a></li><li><a href="tts.html" js="">tts</a></li><li><a href="ttsEngine.html" js="">ttsEngine</a></li><li><a href="types.html" js="">types</a></li><li><a href="webNavigation.html" js="">webNavigation</a></li><li><a href="webRequest.html" js="">webRequest</a></li><li><a href="webstore.html" js="">webstore</a></li><li><a href="windows.html" js="">windows</a></li> </ul> <h2 id="experimental">Experimental APIs</h2> <p> diff --git a/chrome/common/extensions/docs/examples/api/topsites/magic8ball/manifest.json b/chrome/common/extensions/docs/examples/api/topsites/magic8ball/manifest.json index 379037f..84f12ac 100644 --- a/chrome/common/extensions/docs/examples/api/topsites/magic8ball/manifest.json +++ b/chrome/common/extensions/docs/examples/api/topsites/magic8ball/manifest.json @@ -6,9 +6,8 @@ "newtab": "newTab.html" }, "permissions": [ - "experimental", - "chrome://favicon/", - "chrome://thumb/" + "topSites", + "chrome://favicon/" ], "manifest_version": 2 } diff --git a/chrome/common/extensions/docs/examples/api/topsites/magic8ball/newTab.css b/chrome/common/extensions/docs/examples/api/topsites/magic8ball/newTab.css index 88781e2..6c070fb 100644 --- a/chrome/common/extensions/docs/examples/api/topsites/magic8ball/newTab.css +++ b/chrome/common/extensions/docs/examples/api/topsites/magic8ball/newTab.css @@ -1,4 +1,4 @@ -/* Copyright (c) 2011 The Chromium Authors. All rights reserved. +/* Copyright (c) 2012 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. */ @@ -13,24 +13,16 @@ html { #title { color: #555; - font-size: 400%; font-weight: bold; + height: 200px; vertical-align: middle; } #mostVisitedThumb { - display: inline-block; - height: 132px; + background-repeat: no-repeat; + height: 200px; margin-left: 20px; - position: relative; + padding-left: 20px; vertical-align: middle; width: 212px; } - -#mostVisitedThumb span { - background-repeat: no-repeat; - bottom: -23px; - padding-left: 20px; - position: absolute; - white-space: nowrap; -} diff --git a/chrome/common/extensions/docs/examples/api/topsites/magic8ball/newTab.html b/chrome/common/extensions/docs/examples/api/topsites/magic8ball/newTab.html index b3e5dac..4539728 100644 --- a/chrome/common/extensions/docs/examples/api/topsites/magic8ball/newTab.html +++ b/chrome/common/extensions/docs/examples/api/topsites/magic8ball/newTab.html @@ -13,11 +13,13 @@ <title>New 8ball</title> <body> - <div id="spacer"></div> - <span id='title'>Magic 8 ball says to visit</span> - <a id='mostVisitedThumb'> - <span></span> - </a> + <center> + <div id="spacer"></div> + <span id='title'>Magic 8 ball says to visit</span> + <a id='mostVisitedThumb'> + <span></span> + </a> + </center> </body> </html> diff --git a/chrome/common/extensions/docs/examples/api/topsites/magic8ball/newTab.js b/chrome/common/extensions/docs/examples/api/topsites/magic8ball/newTab.js index 851d745..69ffad6 100644 --- a/chrome/common/extensions/docs/examples/api/topsites/magic8ball/newTab.js +++ b/chrome/common/extensions/docs/examples/api/topsites/magic8ball/newTab.js @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -9,15 +9,12 @@ function $(id) { function thumbnailsGotten(data) { var eightBallWindow = $('mostVisitedThumb'); var rand = Math.floor(Math.random() * data.length); - eightBallWindow.style.backgroundImage = - 'url(chrome://thumb/' + data[rand].url + ')'; eightBallWindow.href = data[rand].url; - - var span = eightBallWindow.querySelector('span'); - span.textContent = data[rand].title; - span.style.backgroundImage = 'url(chrome://favicon/' + data[rand].url + ')'; + eightBallWindow.textContent = data[rand].title; + eightBallWindow.style.backgroundImage = 'url(chrome://favicon/' + + data[rand].url + ')'; } window.onload = function() { - chrome.experimental.topSites.get(thumbnailsGotten); + chrome.topSites.get(thumbnailsGotten); } diff --git a/chrome/common/extensions/docs/js/api_page_generator.js b/chrome/common/extensions/docs/js/api_page_generator.js index b73f037..44708af 100644 --- a/chrome/common/extensions/docs/js/api_page_generator.js +++ b/chrome/common/extensions/docs/js/api_page_generator.js @@ -48,7 +48,6 @@ var MODULE_SCHEMAS = [ '../api/experimental.serial.json', '../api/experimental.socket.json', '../api/experimental.speechInput.json', - '../api/experimental.topSites.json', '../api/experimental.webRequest.json', '../api/extension.json', '../api/fileBrowserHandler.json', @@ -72,6 +71,7 @@ var MODULE_SCHEMAS = [ '../api/systemPrivate.json', '../api/tabs.json', '../api/test.json', + '../api/topSites.json', '../api/tts.json', '../api/ttsEngine.json', '../api/types.json', diff --git a/chrome/common/extensions/docs/permissions.html b/chrome/common/extensions/docs/permissions.html index fc2befd..937d95c 100644 --- a/chrome/common/extensions/docs/permissions.html +++ b/chrome/common/extensions/docs/permissions.html @@ -336,6 +336,7 @@ You can specify any of the following as optional permissions: <li>notifications</li> <li>pageCapture</li> <li>tabs</li> + <li>topSites</li> <li>webNavigation</li> <li>webRequest</li> <li>webRequestBlocking</li> diff --git a/chrome/common/extensions/docs/samples.html b/chrome/common/extensions/docs/samples.html index c181ab4..d0f7291 100644 --- a/chrome/common/extensions/docs/samples.html +++ b/chrome/common/extensions/docs/samples.html @@ -238,7 +238,7 @@ "6444e5c8ae112a6a433909c5e770669cd16e2e5f": "NEWS READER DISPLAYS THE FIRST 5 ITEMS FROM THE GOOGLE NEWS - TOP NEWS RSS FEED IN A POPUP. BROWSER_ACTION TABS CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE", "3aea027164cb9b732ba4a8c51cb93708891726ef": "NEWS READER (BY GOOGLE) DISPLAYS THE LATEST STORIES FROM GOOGLE NEWS IN A POPUP. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.EXTENSION.GETURL CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE", "f799e26ceef2367cf836f24bcb47df4398b0df58": "NOTIFICATION DEMO SHOWS OFF DESKTOP NOTIFICATIONS, WHICH ARE TOAST WINDOWS THAT POP UP ON THE DESKTOP. BACKGROUND_PAGE NOTIFICATIONS OPTIONS_PAGE TABS", - "2df34c9db20549bd52f2dec3d59d564853bdefac": "NTP PROTOTYPING EXTENSION EXTENSION TO PROTOTYPE NEW NTP DESIGNS CHROME_URL_OVERRIDES EXPERIMENTAL", + "2df34c9db20549bd52f2dec3d59d564853bdefac": "NTP PROTOTYPING EXTENSION EXTENSION TO PROTOTYPE NEW NTP DESIGNS CHROME_URL_OVERRIDES TOPSITES CHROME.TOPSITES.GET", "e787b322bddbc6289bb31b7d7550b1bf6456a80b": "OMNIBOX EXAMPLE TO USE, TYPE OMNIX PLUS A SEARCH TERM INTO THE OMNIBOX. BACKGROUND_PAGE CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED", "8d0a50b57c26bb498be592e871001ffed91541b4": "PAGE ACTION BY CONTENT SHOWS A PAGE ACTION FOR HTML PAGES CONTAINING THE WORD SANDWICH BACKGROUND_PAGE PAGE_ACTION CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.PAGEACTION.SHOW", "80b86ccc6e8520660fa591caa565826f0ed1b12c": "PAGE ACTION BY URL SHOWS A PAGE ACTION FOR URLS WHICH HAVE THE LETTER G IN THEM. BACKGROUND_PAGE PAGE_ACTION TABS CHROME.PAGEACTION.SHOW CHROME.TABS.ONUPDATED", @@ -320,6 +320,8 @@ </span><span> <a href="javascript:void(0);" onclick="setFilter('chrome.tabs', this)">chrome.tabs</a><span>, </span> </span><span> + <a href="javascript:void(0);" onclick="setFilter('chrome.topSites', this)">chrome.topSites</a><span>, </span> + </span><span> <a href="javascript:void(0);" onclick="setFilter('chrome.tts', this)">chrome.tts</a><span>, </span> </span><span> <a href="javascript:void(0);" onclick="setFilter('chrome.ttsEngine', this)">chrome.ttsEngine</a><span>, </span> @@ -2518,10 +2520,17 @@ <strong>chrome_url_overrides</strong> <span> and</span> </span><span> - <strong>experimental</strong> + <strong>topSites</strong> </span> </p> <p>extension to prototype new NTP designs</p> + <div class="apicalls"><strong>Calls:</strong> + <ul> + <li> + <code><a href="topSites.html#method-get">chrome.topSites.get</a></code> + </li> + </ul> + </div> <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> diff --git a/chrome/common/extensions/docs/samples.json b/chrome/common/extensions/docs/samples.json index 545ce87..f7c9d49 100644 --- a/chrome/common/extensions/docs/samples.json +++ b/chrome/common/extensions/docs/samples.json @@ -228,6 +228,7 @@ "chrome.tabs.remove": "tabs.html#method-remove", "chrome.tabs.sendRequest": "tabs.html#method-sendRequest", "chrome.tabs.update": "tabs.html#method-update", + "chrome.topSites.get": "topSites.html#method-get", "chrome.tts.getVoices": "tts.html#method-getVoices", "chrome.tts.isSpeaking": "tts.html#method-isSpeaking", "chrome.tts.speak": "tts.html#method-speak", @@ -1749,12 +1750,14 @@ "zip_path": "examples\/api\/notifications.zip" }, { - "api_calls": [], + "api_calls": [ + "chrome.topSites.get" + ], "crx_path": null, "description": "extension to prototype new NTP designs", "features": [ "chrome_url_overrides", - "experimental" + "topSites" ], "icon": null, "id": "2df34c9db20549bd52f2dec3d59d564853bdefac", @@ -1762,17 +1765,16 @@ "packaged_app": false, "path": "examples\/api\/topsites\/magic8ball\/", "protocols": [ - "chrome:\/\/", "chrome:\/\/" ], - "search_string": "NTP PROTOTYPING EXTENSION EXTENSION TO PROTOTYPE NEW NTP DESIGNS CHROME_URL_OVERRIDES EXPERIMENTAL", + "search_string": "NTP PROTOTYPING EXTENSION EXTENSION TO PROTOTYPE NEW NTP DESIGNS CHROME_URL_OVERRIDES TOPSITES CHROME.TOPSITES.GET", "source_files": [ "manifest.json", "newTab.css", "newTab.html", "newTab.js" ], - "source_hash": "4d7cc6f66c8bee44ae3857b7dcb7bdae7c3e60f5", + "source_hash": "e31b2a10f0fa1455d7bd14f5da5f157efff99ec7", "zip_path": "examples\/api\/topsites\/magic8ball.zip" }, { diff --git a/chrome/common/extensions/docs/static/permissions.html b/chrome/common/extensions/docs/static/permissions.html index 39b0259..7868f3f 100644 --- a/chrome/common/extensions/docs/static/permissions.html +++ b/chrome/common/extensions/docs/static/permissions.html @@ -91,6 +91,7 @@ You can specify any of the following as optional permissions: <li>notifications</li> <li>pageCapture</li> <li>tabs</li> + <li>topSites</li> <li>webNavigation</li> <li>webRequest</li> <li>webRequestBlocking</li> diff --git a/chrome/common/extensions/docs/static/topSites.html b/chrome/common/extensions/docs/static/topSites.html new file mode 100644 index 0000000..696ace6 --- /dev/null +++ b/chrome/common/extensions/docs/static/topSites.html @@ -0,0 +1,34 @@ +<!-- BEGIN AUTHORED CONTENT --> + +<h2 id="manifest">Notes</h2> + +<p> +The top sites module allows access to the top sites that are displayed on +the new tab page. +</p> + +<h2 id="manifest">Manifest</h2> + +<p> +You must declare the "topSites" permission in your extension's manifest +to use this API. +</p> + +<pre>{ + "name": "My extension", + ... +<b> "permissions": [ + "topSites", + ]</b>, + ... +}</pre> + + +<h2 id="examples">Examples</h2> + +<p> +You can find samples of this API in +<a href="samples.html#topsites">Samples</a>. +</p> + +<!-- END AUTHORED CONTENT --> diff --git a/chrome/common/extensions/docs/topSites.html b/chrome/common/extensions/docs/topSites.html new file mode 100644 index 0000000..0182a81 --- /dev/null +++ b/chrome/common/extensions/docs/topSites.html @@ -0,0 +1,485 @@ +<!DOCTYPE html><!-- This page is a placeholder for generated extensions api doc. Note: + 1) The <head> information in this page is significant, should be uniform + across api docs and should be edited only with knowledge of the + templating mechanism. + 3) All <body>.innerHTML is genereated as an rendering step. If viewed in a + browser, it will be re-generated from the template, json schema and + authored overview content. + 4) The <body>.innerHTML is also generated by an offline step so that this + page may easily be indexed by search engines. +--><html xmlns="http://www.w3.org/1999/xhtml"><head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <link href="css/ApiRefStyles.css" rel="stylesheet" type="text/css"> + <link href="css/print.css" rel="stylesheet" type="text/css" media="print"> + <script type="text/javascript" src="../../../third_party/jstemplate/jstemplate_compiled.js"> + </script> + <script type="text/javascript" src="../../../../third_party/json_minify/minify-sans-regexp.js"> + </script> + <script type="text/javascript" src="js/api_page_generator.js"></script> + <script type="text/javascript" src="js/bootstrap.js"></script> + <script type="text/javascript" src="js/sidebar.js"></script> + <meta name="description" content="Documentation for the chrome.topSites module, which is part of the Google Chrome extension APIs."><title>chrome.topSites - Google Chrome Extensions - Google Code</title></head> + <body> <div id="devModeWarning" class="displayModeWarning"> + You are viewing extension docs in chrome via the 'file:' scheme: are you expecting to see local changes when you refresh? You'll need run chrome with --allow-file-access-from-files. + </div> + <div id="branchWarning" class="displayModeWarning"> + <span>WARNING: This is the <span id="branchName">BETA</span> documentation. + It may not work with the stable release of Chrome.</span> + <select id="branchChooser"> + <option>Choose a different version... + </option><option value="">Stable + </option><option value="beta">Beta + </option><option value="dev">Dev + </option><option value="trunk">Trunk + </option></select> + </div> + <div id="unofficialWarning" class="displayModeWarning"> + <span>WARNING: This is unofficial documentation. It may not work with the + current release of Chrome.</span> + <button id="goToOfficialDocs">Go to the official docs</button> + </div> + <div id="gc-container" class="labs"> + <!-- SUBTEMPLATES: DO NOT MOVE FROM THIS LOCATION --> + <!-- In particular, sub-templates that recurse, must be used by allowing + jstemplate to make a copy of the template in this section which + are not operated on by way of the jsskip="true" --> + <!-- /SUBTEMPLATES --> + <a id="top"></a> + <div id="skipto"> + <a href="#gc-pagecontent">Skip to page content</a> + <a href="#gc-toc">Skip to main navigation</a> + </div> + <!-- API HEADER --> + <table id="header" width="100%" cellspacing="0" border="0"> + <tbody><tr> + <td valign="middle"><a href="http://code.google.com/"><img src="images/code_labs_logo.gif" height="43" width="161" alt="Google Code Labs" style="border:0; margin:0;"></a></td> + <td valign="middle" width="100%" style="padding-left:0.6em;"> + <form action="http://www.google.com/cse" id="cse" style="margin-top:0.5em"> + <div id="gsc-search-box"> + <input type="hidden" name="cx" value="002967670403910741006:61_cvzfqtno"> + <input type="hidden" name="ie" value="UTF-8"> + <input type="text" name="q" value="" size="55"> + <input class="gsc-search-button" type="submit" name="sa" value="Search"> + <br> + <span class="greytext">e.g. "page action" or "tabs"</span> + </div> + </form> + <script type="text/javascript" src="https://www.google.com/jsapi"></script> + <script type="text/javascript">google.load("elements", "1", {packages: "transliteration"});</script> + <script type="text/javascript" src="https://www.google.com/coop/cse/t13n?form=cse&t13n_langs=en"></script> + <script type="text/javascript" src="https://www.google.com/coop/cse/brand?form=cse&lang=en"></script> + </td> + </tr> + </tbody></table> + <div id="codesiteContent" class=""> + <a id="gc-topnav-anchor"></a> + <div id="gc-topnav"> + <h1>Google Chrome Extensions (<a href="http://code.google.com/labs/">Labs</a>)</h1> + <ul id="home" class="gc-topnav-tabs"> + <li id="home_link"> + <a href="index.html" title="Google Chrome Extensions home page">Home</a> + </li> + <li id="docs_link"> + <a href="docs.html" title="Official Google Chrome Extensions documentation">Docs</a> + </li> + <li id="faq_link"> + <a href="faq.html" title="Answers to frequently asked questions about Google Chrome Extensions">FAQ</a> + </li> + <li id="samples_link"> + <a href="samples.html" title="Sample extensions (with source code)">Samples</a> + </li> + <li id="group_link"> + <a href="http://groups.google.com/a/chromium.org/group/chromium-extensions" title="Google Chrome Extensions developer forum">Group</a> + </li> + <li id="so_link"> + <a href="http://stackoverflow.com/questions/tagged/google-chrome-extension" title="[google-chrome-extension] tag on Stack Overflow">Questions?</a> + </li> + </ul> + </div> <!-- end gc-topnav --> + <div class="g-section g-tpl-170"> + <!-- SIDENAV --> + <div class="g-unit g-first" id="gc-toc"> + <ul> + <li><a href="getstarted.html">Getting Started</a></li> + <li><a href="overview.html">Overview</a></li> + <li><a href="whats_new.html">What's New?</a></li> + <li><h2><a href="devguide.html">Developer's Guide</a></h2> + <ul> + <li>Browser UI + <ul> + <li><a href="browserAction.html">Browser Actions</a></li> + <li><a href="contextMenus.html">Context Menus</a></li> + <li><a href="notifications.html">Desktop Notifications</a></li> + <li><a href="omnibox.html">Omnibox</a></li> + <li><a href="options.html">Options Pages</a></li> + <li><a href="override.html">Override Pages</a></li> + <li><a href="pageAction.html">Page Actions</a></li> + </ul> + </li> + <li>Browser Interaction + <ul> + <li><a href="bookmarks.html">Bookmarks</a></li> + <li><a href="cookies.html">Cookies</a></li> + <li><a href="devtools.html">Developer Tools</a></li> + <li><a href="events.html">Events</a></li> + <li><a href="history.html">History</a></li> + <li><a href="management.html">Management</a></li> + <li><a href="tabs.html">Tabs</a></li> + <li><a href="windows.html">Windows</a></li> + </ul> + </li> + <li>Implementation + <ul> + <li><a href="a11y.html">Accessibility</a></li> + <li><a href="background_pages.html">Background Pages</a></li> + <li><a href="content_scripts.html">Content Scripts</a></li> + <li><a href="xhr.html">Cross-Origin XHR</a></li> + <li><a href="i18n.html">Internationalization</a></li> + <li><a href="messaging.html">Message Passing</a></li> + <li><a href="permissions.html">Optional Permissions</a></li> + <li><a href="npapi.html">NPAPI Plugins</a></li> + </ul> + </li> + <li>Finishing + <ul> + <li><a href="hosting.html">Hosting</a></li> + <li><a href="external_extensions.html">Other Deployment Options</a></li> + </ul> + </li> + </ul> + </li> + <li><h2><a href="apps.html">Packaged Apps</a></h2></li> + <li><h2><a href="tutorials.html">Tutorials</a></h2> + <ul> + <li><a href="tut_debugging.html">Debugging</a></li> + <li><a href="tut_analytics.html">Google Analytics</a></li> + <li><a href="tut_oauth.html">OAuth</a></li> + </ul> + </li> + <li><h2>Reference</h2> + <ul> + <li>Formats + <ul> + <li><a href="manifest.html">Manifest Files</a></li> + <li><a href="match_patterns.html">Match Patterns</a></li> + </ul> + </li> + <li><a href="permission_warnings.html">Permission Warnings</a></li> + <li><a href="api_index.html">chrome.* APIs</a></li> + <li><a href="api_other.html">Other APIs</a></li> + </ul> + </li> + <li><h2><a href="samples.html">Samples</a></h2></li> + <div class="line"> </div> + <li><h2>More</h2> + <ul> + <li><a href="http://code.google.com/chrome/webstore/docs/index.html">Chrome Web Store</a></li> + <li><a href="http://code.google.com/chrome/apps/docs/developers_guide.html">Hosted Apps</a></li> + <li><a href="themes.html">Themes</a></li> + </ul> + </li> + </ul> + </div> + <script> + initToggles(); + </script> + <div class="g-unit" id="gc-pagecontent"> + <div id="pageTitle"> + <h1 class="page_title">chrome.topSites</h1> + </div> + <!-- TABLE OF CONTENTS --> + <div id="toc"> + <h2>Contents</h2> + <ol> + <li> + <a href="#manifest">Notes</a> + <ol> + </ol> + </li><li> + <a href="#manifest">Manifest</a> + <ol> + </ol> + </li><li> + <a href="#examples">Examples</a> + <ol> + </ol> + </li> + <li> + <a href="#apiReference">API reference: chrome.topSites</a> + <ol> + <li> + <a href="#global-methods">Methods</a> + <ol> + <li> + <a href="#method-get">get</a> + </li> + </ol> + </li> + <li> + <a href="#types">Types</a> + <ol> + <li> + <a href="#type-MostVisitedURL">MostVisitedURL</a> + <ol> + </ol> + </li> + </ol> + </li> + </ol> + </li> + </ol> + </div> + <!-- /TABLE OF CONTENTS --> + <!-- Standard content lead-in for experimental API pages --> + <!-- STATIC CONTENT PLACEHOLDER --> + <div id="static"><!-- BEGIN AUTHORED CONTENT --> +<h2 id="manifest">Notes</h2> +<p> +The top sites module allows access to the top sites that are displayed on +the new tab page. +</p> +<h2 id="manifest">Manifest</h2> +<p> +You must declare the "topSites" permission in your extension's manifest +to use this API. +</p> +<pre>{ + "name": "My extension", + ... +<b> "permissions": [ + "topSites", + ]</b>, + ... +}</pre> +<h2 id="examples">Examples</h2> +<p> +You can find samples of this API in +<a href="samples.html#topsites">Samples</a>. +</p> +<!-- END AUTHORED CONTENT --> +</div> + <!-- API PAGE --> + <div class="apiPage"> + <a name="apiReference"></a> + <h2>API reference: chrome.topSites</h2> + <!-- PROPERTIES --> + <!-- /apiGroup --> + <!-- METHODS --> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> + <h3>Methods</h3> + <!-- iterates over all functions --> + <div class="apiItem"> + <a name="method-get"></a> <!-- method-anchor --> + <h4>get</h4> + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span>chrome.topSites.get</span>(<span class="null"><span>function</span> + <var><span>callback</span></var></span>)</div> + <div class="description"> + <p>Gets a list of top sites.</p> + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>callback</var> + <em> + <!-- TYPE --> + <div style="display:inline"> + ( + <span id="typeTemplate"> + <span> + <span>function</span> + </span> + </span> + ) + </div> + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <!-- OBJECT PROPERTIES --> + <!-- OBJECT METHODS --> + <!-- OBJECT EVENT FIELDS --> + <!-- FUNCTION PARAMETERS --> + </div> + </div> + </dl> + <!-- RETURNS --> + <dl> + </dl> + <!-- CALLBACK --> + <div> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>array of MostVisitedURL data</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + <dt> + <var>data</var> + <em> + <!-- TYPE --> + <div style="display:inline"> + ( + <span id="typeTemplate"> + <span> + <span> + array of <span><span> + <span> + <a href="topSites.html#type-MostVisitedURL">MostVisitedURL</a> + </span> + </span></span> + </span> + </span> + </span> + ) + </div> + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <!-- OBJECT PROPERTIES --> + <!-- OBJECT METHODS --> + <!-- OBJECT EVENT FIELDS --> + <!-- FUNCTION PARAMETERS --> + </div> + </div> + </dl> + </div> + </div> + <!-- MIN_VERSION --> + </div> <!-- /description --> + </div> <!-- /apiItem --> + </div> <!-- /apiGroup --> + <!-- EVENTS --> + <!-- /apiGroup --> + <!-- TYPES --> + <div class="apiGroup"> + <a name="types"></a> + <h3 id="types">Types</h3> + <!-- iterates over all types --> + <div class="apiItem"> + <a name="type-MostVisitedURL"></a> + <h4>MostVisitedURL</h4> + <div> + <dt> + <em> + <!-- TYPE --> + <div style="display:inline"> + ( + <span id="typeTemplate"> + <span> + <span>object</span> + </span> + </span> + ) + </div> + </em> + </dt> + <dd>An object encapsulating a most visited URL, such as the URLs on the new tab page.</dd> + <!-- OBJECT PROPERTIES --> + <dd> + <dl> + <div> + <div> + <dt> + <var>url</var> + <em> + <!-- TYPE --> + <div style="display:inline"> + ( + <span id="typeTemplate"> + <span> + <span>string</span> + </span> + </span> + ) + </div> + </em> + </dt> + <dd>The most visited URL.</dd> + <!-- OBJECT PROPERTIES --> + <!-- OBJECT METHODS --> + <!-- OBJECT EVENT FIELDS --> + <!-- FUNCTION PARAMETERS --> + </div> + </div><div> + <div> + <dt> + <var>title</var> + <em> + <!-- TYPE --> + <div style="display:inline"> + ( + <span id="typeTemplate"> + <span> + <span>string</span> + </span> + </span> + ) + </div> + </em> + </dt> + <dd>The title of the page</dd> + <!-- OBJECT PROPERTIES --> + <!-- OBJECT METHODS --> + <!-- OBJECT EVENT FIELDS --> + <!-- FUNCTION PARAMETERS --> + </div> + </div> + </dl> + </dd> + <!-- OBJECT METHODS --> + <!-- OBJECT EVENT FIELDS --> + <!-- FUNCTION PARAMETERS --> + </div> + </div> <!-- /apiItem --> + </div> <!-- /apiGroup --> + </div> <!-- /apiPage --> + </div> <!-- /gc-pagecontent --> + </div> <!-- /g-section --> + </div> <!-- /codesiteContent --> + <div id="gc-footer" --=""> + <div class="text"> + <p> + Except as otherwise <a href="http://code.google.com/policies.html#restrictions">noted</a>, + the content of this page is licensed under the <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons + Attribution 3.0 License</a>, and code samples are licensed under the + <a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>. + </p> + <p> + ©2011 Google + </p> +<!-- begin analytics --> +<script src="https://www.google-analytics.com/urchin.js" type="text/javascript"></script> +<script src="https://www.google-analytics.com/ga.js" type="text/javascript"></script> +<script type="text/javascript"> + // chrome doc tracking + try { + var engdocs = _gat._getTracker("YT-10763712-2"); + engdocs._trackPageview(); + } catch(err) {} + // code.google.com site-wide tracking + try { + _uacct="UA-18071-1"; + _uanchor=1; + _uff=0; + urchinTracker(); + } + catch(e) {/* urchinTracker not available. */} +</script> +<!-- end analytics --> + </div> + </div> <!-- /gc-footer --> + </div> <!-- /gc-container --> +</body></html> diff --git a/chrome/common/extensions/extension_permission_set.cc b/chrome/common/extensions/extension_permission_set.cc index 84b54e9..0c90e47 100644 --- a/chrome/common/extensions/extension_permission_set.cc +++ b/chrome/common/extensions/extension_permission_set.cc @@ -256,6 +256,9 @@ void ExtensionAPIPermission::RegisterAllPermissions( kTab, "tabs", IDS_EXTENSION_PROMPT_WARNING_TABS, ExtensionPermissionMessage::kTabs, kFlagNone); info->RegisterPermission( + kTopSites, "topSites", IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY, + ExtensionPermissionMessage::kBrowsingHistory, kFlagNone); + info->RegisterPermission( kTts, "tts", 0, ExtensionPermissionMessage::kNone, kFlagCannotBeOptional); info->RegisterPermission( diff --git a/chrome/common/extensions/extension_permission_set.h b/chrome/common/extensions/extension_permission_set.h index 7c78c35..73435f6 100644 --- a/chrome/common/extensions/extension_permission_set.h +++ b/chrome/common/extensions/extension_permission_set.h @@ -133,6 +133,7 @@ class ExtensionAPIPermission { kSystemPrivate, kTab, kTerminalPrivate, + kTopSites, kTts, kTtsEngine, kUnlimitedStorage, |