Commit 972b1aff authored by Sigurdur Asgeirsson's avatar Sigurdur Asgeirsson Committed by Commit Bot

PM: Add change notification on frame URL changes.

Change-Id: I53e12a84340df56e24bc78abddf479e109a7aba0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1617085
Commit-Queue: Chris Hamilton <chrisha@chromium.org>
Reviewed-by: default avatarChris Hamilton <chrisha@chromium.org>
Auto-Submit: Sigurður Ásgeirsson <siggi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#661207}
parent e90902cb
......@@ -140,7 +140,7 @@ bool FrameNodeImpl::has_nonempty_beforeunload() const {
const GURL& FrameNodeImpl::url() const {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
return document_.url;
return document_.url.value();
}
bool FrameNodeImpl::is_current() const {
......@@ -192,7 +192,7 @@ void FrameNodeImpl::OnNavigationCommitted(const GURL& url, bool same_document) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
if (same_document) {
document_.url = url;
document_.url.SetAndMaybeNotify(this, url);
return;
}
......@@ -345,7 +345,7 @@ FrameNodeImpl::DocumentProperties::~DocumentProperties() = default;
void FrameNodeImpl::DocumentProperties::Reset(FrameNodeImpl* frame_node,
const GURL& url_in) {
url = url_in;
url.SetAndMaybeNotify(frame_node, url_in);
has_nonempty_beforeunload = false;
// Network is busy on navigation.
network_almost_idle.SetAndMaybeNotify(frame_node, false);
......
......@@ -38,6 +38,9 @@ class FrameNodeImplObserver {
// Invoked when the |lifecycle_state| property changes.
virtual void OnLifecycleStateChanged(FrameNodeImpl* frame_node) = 0;
// Invoked when the |url| property changes.
virtual void OnURLChanged(FrameNodeImpl* frame_node) = 0;
// Events with no property changes.
// Invoked when a non-persistent notification has been issued by the frame.
......@@ -153,7 +156,7 @@ class FrameNodeImpl
void Reset(FrameNodeImpl* frame_node, const GURL& url_in);
GURL url;
ObservedProperty::NotifiesOnlyOnChanges<GURL, &Observer::OnURLChanged> url;
bool has_nonempty_beforeunload = false;
// Network is considered almost idle when there are no more than 2 network
......@@ -233,6 +236,7 @@ class FrameNodeImpl::ObserverDefaultImpl : public FrameNodeImpl::Observer {
void OnNetworkAlmostIdleChanged(FrameNodeImpl* frame_node) override {}
void OnLifecycleStateChanged(FrameNodeImpl* frame_node) override {}
void OnNonPersistentNotificationCreated(FrameNodeImpl* frame_node) override {}
void OnURLChanged(FrameNodeImpl* frame_node) override {}
private:
DISALLOW_COPY_AND_ASSIGN(ObserverDefaultImpl);
......
......@@ -35,7 +35,7 @@ class ObservedPropertyImpl {
((observer).*(NotifyFunctionPtr))(node);
}
PropertyType value() const { return value_; }
const PropertyType& value() const { return value_; }
private:
PropertyType value_;
......@@ -66,7 +66,7 @@ class ObservedPropertyImpl {
return true;
}
PropertyType value() const { return value_; }
const PropertyType& value() const { return value_; }
private:
PropertyType value_;
......
......@@ -65,6 +65,7 @@ class GraphObserverDefaultImpl : public GraphObserver {
void OnIsCurrentChanged(FrameNodeImpl* frame_node) override {}
void OnNetworkAlmostIdleChanged(FrameNodeImpl* frame_node) override {}
void OnLifecycleStateChanged(FrameNodeImpl* frame_node) override {}
void OnURLChanged(FrameNodeImpl* frame_node) override {}
void OnNonPersistentNotificationCreated(FrameNodeImpl* frame_node) override {}
// PageNodeImplObserver implementation:
......
......@@ -214,6 +214,11 @@ void WebUIGraphDumpImpl::OnLifecycleStateChanged(FrameNodeImpl* frame_node) {
SendFrameNotification(frame_node, false);
}
void WebUIGraphDumpImpl::OnURLChanged(FrameNodeImpl* frame_node) {
SendFrameNotification(frame_node, false);
StartFrameFaviconRequest(frame_node);
}
void WebUIGraphDumpImpl::OnIsVisibleChanged(PageNodeImpl* page_node) {
SendPageNotification(page_node, false);
}
......
......@@ -38,6 +38,7 @@ class WebUIGraphDumpImpl : public mojom::WebUIGraphDump, public GraphObserver {
void OnIsCurrentChanged(FrameNodeImpl* frame_node) override;
void OnNetworkAlmostIdleChanged(FrameNodeImpl* frame_node) override;
void OnLifecycleStateChanged(FrameNodeImpl* frame_node) override;
void OnURLChanged(FrameNodeImpl* frame_node) override;
// Event notification.
void OnNonPersistentNotificationCreated(FrameNodeImpl* frame_node) override {}
void OnIsVisibleChanged(PageNodeImpl* page_node) override;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment