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 { ...@@ -140,7 +140,7 @@ bool FrameNodeImpl::has_nonempty_beforeunload() const {
const GURL& FrameNodeImpl::url() const { const GURL& FrameNodeImpl::url() const {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
return document_.url; return document_.url.value();
} }
bool FrameNodeImpl::is_current() const { bool FrameNodeImpl::is_current() const {
...@@ -192,7 +192,7 @@ void FrameNodeImpl::OnNavigationCommitted(const GURL& url, bool same_document) { ...@@ -192,7 +192,7 @@ void FrameNodeImpl::OnNavigationCommitted(const GURL& url, bool same_document) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
if (same_document) { if (same_document) {
document_.url = url; document_.url.SetAndMaybeNotify(this, url);
return; return;
} }
...@@ -345,7 +345,7 @@ FrameNodeImpl::DocumentProperties::~DocumentProperties() = default; ...@@ -345,7 +345,7 @@ FrameNodeImpl::DocumentProperties::~DocumentProperties() = default;
void FrameNodeImpl::DocumentProperties::Reset(FrameNodeImpl* frame_node, void FrameNodeImpl::DocumentProperties::Reset(FrameNodeImpl* frame_node,
const GURL& url_in) { const GURL& url_in) {
url = url_in; url.SetAndMaybeNotify(frame_node, url_in);
has_nonempty_beforeunload = false; has_nonempty_beforeunload = false;
// Network is busy on navigation. // Network is busy on navigation.
network_almost_idle.SetAndMaybeNotify(frame_node, false); network_almost_idle.SetAndMaybeNotify(frame_node, false);
......
...@@ -38,6 +38,9 @@ class FrameNodeImplObserver { ...@@ -38,6 +38,9 @@ class FrameNodeImplObserver {
// Invoked when the |lifecycle_state| property changes. // Invoked when the |lifecycle_state| property changes.
virtual void OnLifecycleStateChanged(FrameNodeImpl* frame_node) = 0; 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. // Events with no property changes.
// Invoked when a non-persistent notification has been issued by the frame. // Invoked when a non-persistent notification has been issued by the frame.
...@@ -153,7 +156,7 @@ class FrameNodeImpl ...@@ -153,7 +156,7 @@ class FrameNodeImpl
void Reset(FrameNodeImpl* frame_node, const GURL& url_in); void Reset(FrameNodeImpl* frame_node, const GURL& url_in);
GURL url; ObservedProperty::NotifiesOnlyOnChanges<GURL, &Observer::OnURLChanged> url;
bool has_nonempty_beforeunload = false; bool has_nonempty_beforeunload = false;
// Network is considered almost idle when there are no more than 2 network // Network is considered almost idle when there are no more than 2 network
...@@ -233,6 +236,7 @@ class FrameNodeImpl::ObserverDefaultImpl : public FrameNodeImpl::Observer { ...@@ -233,6 +236,7 @@ class FrameNodeImpl::ObserverDefaultImpl : public FrameNodeImpl::Observer {
void OnNetworkAlmostIdleChanged(FrameNodeImpl* frame_node) override {} void OnNetworkAlmostIdleChanged(FrameNodeImpl* frame_node) override {}
void OnLifecycleStateChanged(FrameNodeImpl* frame_node) override {} void OnLifecycleStateChanged(FrameNodeImpl* frame_node) override {}
void OnNonPersistentNotificationCreated(FrameNodeImpl* frame_node) override {} void OnNonPersistentNotificationCreated(FrameNodeImpl* frame_node) override {}
void OnURLChanged(FrameNodeImpl* frame_node) override {}
private: private:
DISALLOW_COPY_AND_ASSIGN(ObserverDefaultImpl); DISALLOW_COPY_AND_ASSIGN(ObserverDefaultImpl);
......
...@@ -35,7 +35,7 @@ class ObservedPropertyImpl { ...@@ -35,7 +35,7 @@ class ObservedPropertyImpl {
((observer).*(NotifyFunctionPtr))(node); ((observer).*(NotifyFunctionPtr))(node);
} }
PropertyType value() const { return value_; } const PropertyType& value() const { return value_; }
private: private:
PropertyType value_; PropertyType value_;
...@@ -66,7 +66,7 @@ class ObservedPropertyImpl { ...@@ -66,7 +66,7 @@ class ObservedPropertyImpl {
return true; return true;
} }
PropertyType value() const { return value_; } const PropertyType& value() const { return value_; }
private: private:
PropertyType value_; PropertyType value_;
......
...@@ -65,6 +65,7 @@ class GraphObserverDefaultImpl : public GraphObserver { ...@@ -65,6 +65,7 @@ class GraphObserverDefaultImpl : public GraphObserver {
void OnIsCurrentChanged(FrameNodeImpl* frame_node) override {} void OnIsCurrentChanged(FrameNodeImpl* frame_node) override {}
void OnNetworkAlmostIdleChanged(FrameNodeImpl* frame_node) override {} void OnNetworkAlmostIdleChanged(FrameNodeImpl* frame_node) override {}
void OnLifecycleStateChanged(FrameNodeImpl* frame_node) override {} void OnLifecycleStateChanged(FrameNodeImpl* frame_node) override {}
void OnURLChanged(FrameNodeImpl* frame_node) override {}
void OnNonPersistentNotificationCreated(FrameNodeImpl* frame_node) override {} void OnNonPersistentNotificationCreated(FrameNodeImpl* frame_node) override {}
// PageNodeImplObserver implementation: // PageNodeImplObserver implementation:
......
...@@ -214,6 +214,11 @@ void WebUIGraphDumpImpl::OnLifecycleStateChanged(FrameNodeImpl* frame_node) { ...@@ -214,6 +214,11 @@ void WebUIGraphDumpImpl::OnLifecycleStateChanged(FrameNodeImpl* frame_node) {
SendFrameNotification(frame_node, false); SendFrameNotification(frame_node, false);
} }
void WebUIGraphDumpImpl::OnURLChanged(FrameNodeImpl* frame_node) {
SendFrameNotification(frame_node, false);
StartFrameFaviconRequest(frame_node);
}
void WebUIGraphDumpImpl::OnIsVisibleChanged(PageNodeImpl* page_node) { void WebUIGraphDumpImpl::OnIsVisibleChanged(PageNodeImpl* page_node) {
SendPageNotification(page_node, false); SendPageNotification(page_node, false);
} }
......
...@@ -38,6 +38,7 @@ class WebUIGraphDumpImpl : public mojom::WebUIGraphDump, public GraphObserver { ...@@ -38,6 +38,7 @@ class WebUIGraphDumpImpl : public mojom::WebUIGraphDump, public GraphObserver {
void OnIsCurrentChanged(FrameNodeImpl* frame_node) override; void OnIsCurrentChanged(FrameNodeImpl* frame_node) override;
void OnNetworkAlmostIdleChanged(FrameNodeImpl* frame_node) override; void OnNetworkAlmostIdleChanged(FrameNodeImpl* frame_node) override;
void OnLifecycleStateChanged(FrameNodeImpl* frame_node) override; void OnLifecycleStateChanged(FrameNodeImpl* frame_node) override;
void OnURLChanged(FrameNodeImpl* frame_node) override;
// Event notification. // Event notification.
void OnNonPersistentNotificationCreated(FrameNodeImpl* frame_node) override {} void OnNonPersistentNotificationCreated(FrameNodeImpl* frame_node) override {}
void OnIsVisibleChanged(PageNodeImpl* page_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