summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-08 20:00:12 +0000
committerjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-08 20:00:12 +0000
commitb79a3043eb7751652deeac37319f075b4177db8e (patch)
treeac9e927e54fea352626e65d1f2f3a3c5c9e33adc /chrome
parent5aebef187028a907b8628640139077d232c52c2e (diff)
downloadchromium_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')
-rw-r--r--chrome/browser/extensions/extension_webnavigation_api.cc56
-rw-r--r--chrome/browser/extensions/extension_webnavigation_api.h6
-rw-r--r--chrome/browser/extensions/extension_webnavigation_api_constants.cc2
-rw-r--r--chrome/browser/extensions/extension_webnavigation_api_constants.h1
-rw-r--r--chrome/common/extensions/api/extension_api.json19
-rw-r--r--chrome/common/extensions/docs/examples/api/webNavigation/basic/background.html2
-rw-r--r--chrome/common/extensions/docs/examples/api/webNavigation/basic/navigation_collector.js36
-rw-r--r--chrome/common/extensions/docs/experimental.webNavigation.html521
-rw-r--r--chrome/common/extensions/docs/samples.html4
-rw-r--r--chrome/common/extensions/docs/samples.json8
-rw-r--r--chrome/test/data/extensions/api_test/webnavigation/framework.js4
-rw-r--r--chrome/test/data/extensions/api_test/webnavigation/test_referenceFragment.js17
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') });
},