diff options
author | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-08 20:00:12 +0000 |
---|---|---|
committer | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-08 20:00:12 +0000 |
commit | b79a3043eb7751652deeac37319f075b4177db8e (patch) | |
tree | ac9e927e54fea352626e65d1f2f3a3c5c9e33adc /chrome | |
parent | 5aebef187028a907b8628640139077d232c52c2e (diff) | |
download | chromium_src-b79a3043eb7751652deeac37319f075b4177db8e.zip chromium_src-b79a3043eb7751652deeac37319f075b4177db8e.tar.gz chromium_src-b79a3043eb7751652deeac37319f075b4177db8e.tar.bz2 |
Introduce webNavigation.onReferenceFragmentUpdated
This event is fired instead of simulating a series of navigation events, since a reference fragment might be changed during a regular navigation
BUG=none
TEST=ExtensionApiTest.WebNavigationReferenceFragment
Review URL: http://codereview.chromium.org/7849016
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@100229 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
12 files changed, 614 insertions, 62 deletions
diff --git a/chrome/browser/extensions/extension_webnavigation_api.cc b/chrome/browser/extensions/extension_webnavigation_api.cc index f79a2af..b72aa71 100644 --- a/chrome/browser/extensions/extension_webnavigation_api.cc +++ b/chrome/browser/extensions/extension_webnavigation_api.cc @@ -87,8 +87,10 @@ void DispatchOnBeforeNavigate(TabContents* tab_contents, json_args); } -// Constructs and dispatches an onCommitted event. -void DispatchOnCommitted(TabContents* tab_contents, +// Constructs and dispatches an onCommitted or onReferenceFragmentUpdated +// event. +void DispatchOnCommitted(const char* event_name, + TabContents* tab_contents, int64 frame_id, bool is_main_frame, const GURL& url, @@ -116,7 +118,7 @@ void DispatchOnCommitted(TabContents* tab_contents, std::string json_args; base::JSONWriter::Write(&args, false, &json_args); - DispatchEvent(tab_contents->browser_context(), keys::kOnCommitted, json_args); + DispatchEvent(tab_contents->browser_context(), event_name, json_args); } // Constructs and dispatches an onDOMContentLoaded event. @@ -493,15 +495,24 @@ void ExtensionWebNavigationTabObserver::DidCommitProvisionalLoadForFrame( is_main_frame, false); - // On reference fragment navigations, only a new navigation state is - // committed. We need to catch this case and generate a full sequence - // of events. if (is_reference_fragment_navigation) { - NavigatedReferenceFragment(frame_id, is_main_frame, url, transition_type); - return; + DispatchOnCommitted( + keys::kOnReferenceFragmentUpdated, + tab_contents(), + frame_id, + is_main_frame, + url, + transition_type); + navigation_state_.SetNavigationCompleted(frame_id); + } else { + DispatchOnCommitted( + keys::kOnCommitted, + tab_contents(), + frame_id, + is_main_frame, + url, + transition_type); } - DispatchOnCommitted( - tab_contents(), frame_id, is_main_frame, url, transition_type); } void ExtensionWebNavigationTabObserver::DidFailProvisionalLoad( @@ -568,31 +579,6 @@ bool ExtensionWebNavigationTabObserver::IsReferenceFragmentNavigation( url.ReplaceComponents(replacements); } -void ExtensionWebNavigationTabObserver::NavigatedReferenceFragment( - int64 frame_id, - bool is_main_frame, - const GURL& url, - PageTransition::Type transition_type) { - DispatchOnBeforeNavigate(tab_contents(), - frame_id, - is_main_frame, - url); - DispatchOnCommitted(tab_contents(), - frame_id, - is_main_frame, - url, - transition_type); - DispatchOnDOMContentLoaded(tab_contents(), - url, - is_main_frame, - frame_id); - navigation_state_.SetNavigationCompleted(frame_id); - DispatchOnCompleted(tab_contents(), - url, - is_main_frame, - frame_id); -} - bool GetFrameFunction::RunImpl() { DictionaryValue* details; EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(0, &details)); diff --git a/chrome/browser/extensions/extension_webnavigation_api.h b/chrome/browser/extensions/extension_webnavigation_api.h index a522008..17b7074 100644 --- a/chrome/browser/extensions/extension_webnavigation_api.h +++ b/chrome/browser/extensions/extension_webnavigation_api.h @@ -144,12 +144,6 @@ class ExtensionWebNavigationTabObserver : public TabContentsObserver { // navigation. bool IsReferenceFragmentNavigation(int64 frame_id, const GURL& url); - // Simulates a complete series of events for reference fragment navigations. - void NavigatedReferenceFragment(int64 frame_id, - bool is_main_frame, - const GURL& url, - PageTransition::Type transition_type); - // Tracks the state of the frames we are sending events for. FrameNavigationState navigation_state_; diff --git a/chrome/browser/extensions/extension_webnavigation_api_constants.cc b/chrome/browser/extensions/extension_webnavigation_api_constants.cc index dcf83f9..52e8425 100644 --- a/chrome/browser/extensions/extension_webnavigation_api_constants.cc +++ b/chrome/browser/extensions/extension_webnavigation_api_constants.cc @@ -25,5 +25,7 @@ const char kOnCompleted[] = "experimental.webNavigation.onCompleted"; const char kOnDOMContentLoaded[] = "experimental.webNavigation.onDOMContentLoaded"; const char kOnErrorOccurred[] = "experimental.webNavigation.onErrorOccurred"; +const char kOnReferenceFragmentUpdated[] = + "experimental.webNavigation.onReferenceFragmentUpdated"; } // namespace extension_webnavigation_api_constants diff --git a/chrome/browser/extensions/extension_webnavigation_api_constants.h b/chrome/browser/extensions/extension_webnavigation_api_constants.h index dc142d6..41aaace 100644 --- a/chrome/browser/extensions/extension_webnavigation_api_constants.h +++ b/chrome/browser/extensions/extension_webnavigation_api_constants.h @@ -29,6 +29,7 @@ extern const char kOnCommitted[]; extern const char kOnCompleted[]; extern const char kOnDOMContentLoaded[]; extern const char kOnErrorOccurred[]; +extern const char kOnReferenceFragmentUpdated[]; } // namespace extension_webnavigation_api_constants diff --git a/chrome/common/extensions/api/extension_api.json b/chrome/common/extensions/api/extension_api.json index 875eabb..20f2cd5 100644 --- a/chrome/common/extensions/api/extension_api.json +++ b/chrome/common/extensions/api/extension_api.json @@ -5350,6 +5350,25 @@ } } ] + }, + { + "name": "onReferenceFragmentUpdated", + "type": "function", + "description": "Fired when the reference fragment of a frame was updated. All future events for that frame will use the updated URL.", + "parameters": [ + { + "type": "object", + "name": "details", + "properties": { + "tabId": {"type": "integer", "description": "The ID of the tab in which the navigation occurs."}, + "url": {"type": "string"}, + "frameId": {"type": "integer", "description": "0 indicates the navigation happens in the tab content window; a positive value indicates navigation in a subframe. Frame IDs are unique within a tab."}, + "transitionType": {"type": "string", "enum": ["link", "typed", "auto_bookmark", "auto_subframe", "manual_subframe", "generated", "start_page", "form_submit", "reload", "keyword", "keyword_generated"], "description": "Cause of the navigation. The same transition types as defined in the history API are used."}, + "transitionQualifiers": {"type": "array", "description": "A list of transition qualifiers.", "items:": {"type": "string", "enum": ["client_redirect", "server_redirect", "forward_back", "from_address_bar"]}}, + "timeStamp": {"type": "number", "description": "The time when the navigation was committed, in milliseconds since the epoch."} + } + } + ] } ] }, diff --git a/chrome/common/extensions/docs/examples/api/webNavigation/basic/background.html b/chrome/common/extensions/docs/examples/api/webNavigation/basic/background.html index 4cf0f56..ece80a1 100644 --- a/chrome/common/extensions/docs/examples/api/webNavigation/basic/background.html +++ b/chrome/common/extensions/docs/examples/api/webNavigation/basic/background.html @@ -15,7 +15,7 @@ var eventList = ['onBeforeNavigate', 'onBeforeCreateNavigationTarget', 'onCommitted', 'onCompleted', 'onDOMContentLoaded', - 'onErrorOccurred']; + 'onErrorOccurred', 'onReferenceFragmentUpdated']; eventList.forEach(function(e) { chrome.experimental.webNavigation[e].addListener(function(data) { diff --git a/chrome/common/extensions/docs/examples/api/webNavigation/basic/navigation_collector.js b/chrome/common/extensions/docs/examples/api/webNavigation/basic/navigation_collector.js index d4bcf32..b5251fb 100644 --- a/chrome/common/extensions/docs/examples/api/webNavigation/basic/navigation_collector.js +++ b/chrome/common/extensions/docs/examples/api/webNavigation/basic/navigation_collector.js @@ -58,6 +58,8 @@ function NavigationCollector() { this.onCommittedListener_.bind(this)); chrome.experimental.webNavigation.onErrorOccurred.addListener( this.onErrorOccurredListener_.bind(this)); + chrome.experimental.webNavigation.onReferenceFragmentUpdated.addListener( + this.onReferenceFragmentUpdatedListener_.bind(this)); // Bind handler to extension messages for communication from popup. chrome.extension.onRequest.addListener(this.onRequestListener_.bind(this)); @@ -220,6 +222,40 @@ NavigationCollector.prototype = { /** + * Handler for the 'onReferenceFragmentUpdated' event. Updates the pending + * request with transition information. + * + * Pushes the request onto the + * 'pending_' object, and stores it for later use. + * + * @param {!Object} data The event data generated for this request. + * @private + */ + onReferenceFragmentUpdatedListener_: function(data) { + var id = this.parseId_(data); + if (!this.pending_[id]) { + this.completed_[data.url] = this.completed_[data.url] || []; + this.completed_[data.url].push({ + duration: 0, + openedInNewWindow: false, + source: { + frameId: null, + tabId: null + }, + transitionQualifiers: data.transitionQualifiers, + transitionType: data.transitionType, + url: data.url + }); + } else { + this.prepareDataStorage_(id, data.url); + this.pending_[id].transitionType = data.transitionType; + this.pending_[id].transitionQualifiers = + data.transitionQualifiers; + } + }, + + + /** * Handler for the 'onCompleted` event. Pulls the request's data from the * 'pending_' object, combines it with the completed event's data, and pushes * a new NavigationCollector.Request object onto 'completed_'. diff --git a/chrome/common/extensions/docs/experimental.webNavigation.html b/chrome/common/extensions/docs/experimental.webNavigation.html index 9563725d..08cd15d 100644 --- a/chrome/common/extensions/docs/experimental.webNavigation.html +++ b/chrome/common/extensions/docs/experimental.webNavigation.html @@ -299,6 +299,8 @@ <a href="#event-onDOMContentLoaded">onDOMContentLoaded</a> </li><li> <a href="#event-onErrorOccurred">onErrorOccurred</a> + </li><li> + <a href="#event-onReferenceFragmentUpdated">onReferenceFragmentUpdated</a> </li> </ol> </li> @@ -3486,6 +3488,525 @@ unexpected results. </dl> </div> <!-- /description --> + </div><div class="apiItem"> + <a name="event-onReferenceFragmentUpdated"></a> + <h4>onReferenceFragmentUpdated</h4> + + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span class="subdued">chrome.experimental.webNavigation.</span><span>onReferenceFragmentUpdated</span><span class="subdued">.addListener</span>(function(<span>object details</span>) <span class="subdued">{...}</span><span></span>); + </div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Fired when the reference fragment of a frame was updated. All future events for that frame will use the updated URL.</p> + + <!-- LISTENER PARAMETERS --> + <div> + <h4>Listener parameters</h4> + <dl> + <div> + <div> + <dt> + <var>details</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>object</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd> + <dl> + <div> + <div> + <dt> + <var>tabId</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>integer</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>The ID of the tab in which the navigation occurs.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>url</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>frameId</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>integer</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>0 indicates the navigation happens in the tab content window; a positive value indicates navigation in a subframe. Frame IDs are unique within a tab.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>transitionType</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span>["link", "typed", "auto_bookmark", "auto_subframe", "manual_subframe", "generated", "start_page", "form_submit", "reload", "keyword", "keyword_generated"]</span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Cause of the navigation. The same transition types as defined in the history API are used.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>transitionQualifiers</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span> + array of <span style="display: none; "><span></span></span> + </span> + <span style="display: none; ">paramType</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A list of transition qualifiers.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>timeStamp</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>number</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>The time when the navigation was committed, in milliseconds since the epoch.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </div> + + <!-- EXTRA PARAMETERS --> + <div style="display: none; "> + <h4>Extra parameters to addListener</h4> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + + <!-- LISTENER RETURN VALUE --> + <h4 style="display: none; ">Listener returns</h4> + <dl> + <div style="display: none; "> + <div> + </div> + </div> + </dl> + + </div> <!-- /description --> </div> <!-- /apiItem --> </div> <!-- /apiGroup --> diff --git a/chrome/common/extensions/docs/samples.html b/chrome/common/extensions/docs/samples.html index 1381d36..a6c71dd 100644 --- a/chrome/common/extensions/docs/samples.html +++ b/chrome/common/extensions/docs/samples.html @@ -368,7 +368,7 @@ "230463f2d5c3d4d0ca13c230e1f00f2aae0a8a64": "TAB INSPECTOR UTILITY FOR WORKING WITH THE EXTENSION TABS API BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.GETSELECTED CHROME.TABS.MOVE CHROME.TABS.ONATTACHED CHROME.TABS.ONCREATED CHROME.TABS.ONDETACHED CHROME.TABS.ONMOVED CHROME.TABS.ONREMOVED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE CHROME.TABS.UPDATE CHROME.WINDOWS.CREATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT CHROME.WINDOWS.GETLASTFOCUSED CHROME.WINDOWS.ONCREATED CHROME.WINDOWS.ONFOCUSCHANGED CHROME.WINDOWS.ONREMOVED CHROME.WINDOWS.REMOVE CHROME.WINDOWS.UPDATE", "e1697cacebad05218798bf3e8a0f724517f0e8c3": "TEST SCREENSHOT EXTENSION DEMONSTRATE SCREENSHOT FUNCTIONALITY IN THE CHROME.TABS API. NOTE: ONLY WORKS FOR CODE.GOOGLE.COM BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETURL CHROME.EXTENSION.GETVIEWS CHROME.TABS.CAPTUREVISIBLETAB CHROME.TABS.CREATE CHROME.TABS.ONUPDATED", "b3de91ab04b7d7a2670ca7ee9d740eb42cead0b6": "TYPED URL HISTORY READS YOUR HISTORY, AND SHOWS THE TOP TEN PAGES YOU GO TO BY TYPING THE URL. BROWSER_ACTION HISTORY TABS CHROME.HISTORY.GETVISITS CHROME.HISTORY.SEARCH CHROME.TABS.CREATE", - "a3c674f7eb93621c590562ad3fa04de4f03f53a0": "WEBNAVIGATION TECH DEMO DEMONSTRATION OF THE WEBNAVIGATION EXTENSION API. BACKGROUND_PAGE BROWSER_ACTION EXPERIMENTAL EXTENSION POPUP WEBNAVIGATION CHROME.EXPERIMENTAL.WEBNAVIGATION.ONBEFORECREATENAVIGATIONTARGET CHROME.EXPERIMENTAL.WEBNAVIGATION.ONBEFORENAVIGATE CHROME.EXPERIMENTAL.WEBNAVIGATION.ONCOMMITTED CHROME.EXPERIMENTAL.WEBNAVIGATION.ONCOMPLETED CHROME.EXPERIMENTAL.WEBNAVIGATION.ONERROROCCURRED CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.I18N.GETMESSAGE", + "a3c674f7eb93621c590562ad3fa04de4f03f53a0": "WEBNAVIGATION TECH DEMO DEMONSTRATION OF THE WEBNAVIGATION EXTENSION API. BACKGROUND_PAGE BROWSER_ACTION EXPERIMENTAL EXTENSION POPUP WEBNAVIGATION CHROME.EXPERIMENTAL.WEBNAVIGATION.ONBEFORECREATENAVIGATIONTARGET CHROME.EXPERIMENTAL.WEBNAVIGATION.ONBEFORENAVIGATE CHROME.EXPERIMENTAL.WEBNAVIGATION.ONCOMMITTED CHROME.EXPERIMENTAL.WEBNAVIGATION.ONCOMPLETED CHROME.EXPERIMENTAL.WEBNAVIGATION.ONERROROCCURRED CHROME.EXPERIMENTAL.WEBNAVIGATION.ONREFERENCEFRAGMENTUPDATED CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.I18N.GETMESSAGE", "0fa4abe6545f0316fea7cfa07c53aa48c4f3d018": "`EXTENSION.ISALLOWED???ACCESS` EXAMPLE DEMONSTRATES THE `EXTENSION.ISALLOWED???ACCESS` APIS BROWSER_ACTION CHROME.EXTENSION.ISALLOWEDFILESCHEMEACCESS CHROME.EXTENSION.ISALLOWEDINCOGNITOACCESS" }; </script> @@ -3411,6 +3411,8 @@ </li><li> <code><a href="experimental.webNavigation.html#event-onErrorOccurred">chrome.experimental.webNavigation.onErrorOccurred</a></code> </li><li> + <code><a href="experimental.webNavigation.html#event-onReferenceFragmentUpdated">chrome.experimental.webNavigation.onReferenceFragmentUpdated</a></code> + </li><li> <code><a href="extension.html#event-onRequest">chrome.extension.onRequest</a></code> </li><li> <code><a href="extension.html#method-sendRequest">chrome.extension.sendRequest</a></code> diff --git a/chrome/common/extensions/docs/samples.json b/chrome/common/extensions/docs/samples.json index 602dc03..9e53f3e 100644 --- a/chrome/common/extensions/docs/samples.json +++ b/chrome/common/extensions/docs/samples.json @@ -77,6 +77,7 @@ "chrome.experimental.webNavigation.onCompleted": "experimental.webNavigation.html#event-onCompleted", "chrome.experimental.webNavigation.onDOMContentLoaded": "experimental.webNavigation.html#event-onDOMContentLoaded", "chrome.experimental.webNavigation.onErrorOccurred": "experimental.webNavigation.html#event-onErrorOccurred", + "chrome.experimental.webNavigation.onReferenceFragmentUpdated": "experimental.webNavigation.html#event-onReferenceFragmentUpdated", "chrome.experimental.webRequest.addEventListener": "experimental.webRequest.html#method-addEventListener", "chrome.experimental.webRequest.eventHandled": "experimental.webRequest.html#method-eventHandled", "chrome.experimental.webRequest.onAuthRequired": "experimental.webRequest.html#event-onAuthRequired", @@ -1898,6 +1899,7 @@ "chrome.experimental.webNavigation.onCommitted", "chrome.experimental.webNavigation.onCompleted", "chrome.experimental.webNavigation.onErrorOccurred", + "chrome.experimental.webNavigation.onReferenceFragmentUpdated", "chrome.extension.onRequest", "chrome.extension.sendRequest", "chrome.i18n.getMessage" @@ -1916,7 +1918,7 @@ "name": "WebNavigation Tech Demo", "path": "examples\/api\/webNavigation\/basic\/", "protocols": [], - "search_string": "WEBNAVIGATION TECH DEMO DEMONSTRATION OF THE WEBNAVIGATION EXTENSION API. BACKGROUND_PAGE BROWSER_ACTION EXPERIMENTAL EXTENSION POPUP WEBNAVIGATION CHROME.EXPERIMENTAL.WEBNAVIGATION.ONBEFORECREATENAVIGATIONTARGET CHROME.EXPERIMENTAL.WEBNAVIGATION.ONBEFORENAVIGATE CHROME.EXPERIMENTAL.WEBNAVIGATION.ONCOMMITTED CHROME.EXPERIMENTAL.WEBNAVIGATION.ONCOMPLETED CHROME.EXPERIMENTAL.WEBNAVIGATION.ONERROROCCURRED CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.I18N.GETMESSAGE", + "search_string": "WEBNAVIGATION TECH DEMO DEMONSTRATION OF THE WEBNAVIGATION EXTENSION API. BACKGROUND_PAGE BROWSER_ACTION EXPERIMENTAL EXTENSION POPUP WEBNAVIGATION CHROME.EXPERIMENTAL.WEBNAVIGATION.ONBEFORECREATENAVIGATIONTARGET CHROME.EXPERIMENTAL.WEBNAVIGATION.ONBEFORENAVIGATE CHROME.EXPERIMENTAL.WEBNAVIGATION.ONCOMMITTED CHROME.EXPERIMENTAL.WEBNAVIGATION.ONCOMPLETED CHROME.EXPERIMENTAL.WEBNAVIGATION.ONERROROCCURRED CHROME.EXPERIMENTAL.WEBNAVIGATION.ONREFERENCEFRAGMENTUPDATED CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.I18N.GETMESSAGE", "source_files": [ "_locales\/en\/messages.json", "background.html", @@ -1924,7 +1926,7 @@ "navigation_collector.js", "popup.html" ], - "source_hash": "7a5020bb7e6f9fc7e1403e422bf34cf62e753f6d", + "source_hash": "50be7822552107893f729ab7912ec6a9b8a82fbd", "zip_path": "examples\/api\/webNavigation\/basic.zip" }, { @@ -1953,4 +1955,4 @@ "zip_path": "examples\/api\/extension\/isAllowedAccess.zip" } ] -}
\ No newline at end of file +} diff --git a/chrome/test/data/extensions/api_test/webnavigation/framework.js b/chrome/test/data/extensions/api_test/webnavigation/framework.js index d3bdb10..92ceeca 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/framework.js +++ b/chrome/test/data/extensions/api_test/webnavigation/framework.js @@ -90,6 +90,10 @@ function initListeners() { function(details) { captureEvent("onBeforeCreateNavigationTarget", details); }); + chrome.experimental.webNavigation.onReferenceFragmentUpdated.addListener( + function(details) { + captureEvent("onReferenceFragmentUpdated", details); + }); chrome.experimental.webNavigation.onErrorOccurred.addListener( function(details) { captureEvent("onErrorOccurred", details); diff --git a/chrome/test/data/extensions/api_test/webnavigation/test_referenceFragment.js b/chrome/test/data/extensions/api_test/webnavigation/test_referenceFragment.js index 42952b2..06e9f22 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/test_referenceFragment.js +++ b/chrome/test/data/extensions/api_test/webnavigation/test_referenceFragment.js @@ -33,27 +33,12 @@ function runTests() { tabId: 0, timeStamp: 0, url: getURL('referenceFragment/a.html') }], - [ "onBeforeNavigate", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('referenceFragment/a.html#anchor') }], - [ "onCommitted", + [ "onReferenceFragmentUpdated", { frameId: 0, tabId: 0, timeStamp: 0, transitionQualifiers: ["client_redirect"], transitionType: "link", - url: getURL('referenceFragment/a.html#anchor') }], - [ "onDOMContentLoaded", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('referenceFragment/a.html#anchor') }], - [ "onCompleted", - { frameId: 0, - tabId: 0, - timeStamp: 0, url: getURL('referenceFragment/a.html#anchor') }]]); chrome.tabs.update(tabId, { url: getURL('referenceFragment/a.html') }); }, |