| // Copyright 2024 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef IOS_CHROME_BROWSER_URL_LOADING_MODEL_URL_LOADING_OBSERVER_H_ |
| #define IOS_CHROME_BROWSER_URL_LOADING_MODEL_URL_LOADING_OBSERVER_H_ |
| |
| #import "base/observer_list_types.h" |
| #import "ui/base/page_transition_types.h" |
| #import "url/gurl.h" |
| |
| // Observer used to update listeners of change of state in url loading. |
| class UrlLoadingObserver : public base::CheckedObserver { |
| public: |
| UrlLoadingObserver(const UrlLoadingObserver&) = delete; |
| UrlLoadingObserver& operator=(const UrlLoadingObserver&) = delete; |
| |
| ~UrlLoadingObserver() override; |
| |
| // The loader will load `URL` in the current tab. Next state will be |
| // one of: tabFailedToLoadURL, tabDidPrerenderURL, |
| // tabDidReloadURL or tabDidLoadURL. |
| virtual void TabWillLoadUrl(const GURL& url, |
| ui::PageTransition transition_type) {} |
| |
| // The loader didn't succeed loading the requested `URL`. Reason |
| // can, for example be an incognito mismatch or an induced crash. |
| // It is possible that the url was loaded, but in another tab. |
| virtual void TabFailedToLoadUrl(const GURL& url, |
| ui::PageTransition transition_type) {} |
| |
| // The loader replaced the load with a prerendering. |
| virtual void TabDidPrerenderUrl(const GURL& url, |
| ui::PageTransition transition_type) {} |
| |
| // The loader reloaded the `URL` in the current tab. |
| virtual void TabDidReloadUrl(const GURL& url, |
| ui::PageTransition transition_type) {} |
| |
| // The loader initiated the `url` loading successfully. |
| virtual void TabDidLoadUrl(const GURL& url, |
| ui::PageTransition transition_type) {} |
| |
| // The loader will load `URL` in a new tab. Next state will be: |
| // newTabDidLoadURL. |
| virtual void NewTabWillLoadUrl(const GURL& url, bool user_initiated) {} |
| |
| // The loader initiated the `URL` loading in a new tab successfully. |
| virtual void NewTabDidLoadUrl(const GURL& url, bool user_initiated) {} |
| |
| // The loader will switch to an existing tab with `URL` instead of loading it. |
| // Next state will be: didSwitchToTabWithURL. |
| virtual void WillSwitchToTabWithUrl(const GURL& url, |
| int new_web_state_index) {} |
| |
| // The loader switched to an existing tab with `URL`. |
| virtual void DidSwitchToTabWithUrl(const GURL& url, int new_web_state_index) { |
| } |
| |
| protected: |
| UrlLoadingObserver(); |
| }; |
| |
| #endif // IOS_CHROME_BROWSER_URL_LOADING_MODEL_URL_LOADING_OBSERVER_H_ |