// Copyright 2021 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_OPTIMIZATION_GUIDE_CONTENT_BROWSER_PAGE_TEXT_OBSERVER_H_ #define COMPONENTS_OPTIMIZATION_GUIDE_CONTENT_BROWSER_PAGE_TEXT_OBSERVER_H_ #include <stdint.h> #include <set> #include "base/functional/callback.h" #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/timer/timer.h" #include "components/optimization_guide/content/browser/page_text_dump_result.h" #include "components/optimization_guide/content/mojom/page_text_service.mojom.h" #include "content/public/browser/web_contents_observer.h" #include "content/public/browser/web_contents_user_data.h" namespace content { class NavigationHandle; } // namespace content namespace optimization_guide { // Provides callers with the text from web pages that they choose to request. // Currently, the only method of obtaining text from the page is by recursively // iterating through all DOM nodes. This is a very expensive operation which // should be avoided whenever possible. Features that wish to get page text need // to implement the |Consumer| interface. |Consumer::MaybeRequestFrameTextDump| // is called on every navigation commit, at which time consumers must decide // whether to request the page text to be dumped, and at what renderer event. // This service will de-duplicate the requests and serve the responses to the // provided callback. class PageTextObserver : public content::WebContentsObserver, public content::WebContentsUserData<PageTextObserver> { … }; } // namespace optimization_guide #endif // COMPONENTS_OPTIMIZATION_GUIDE_CONTENT_BROWSER_PAGE_TEXT_OBSERVER_H_