Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(781)

Unified Diff: content/browser/find_request_manager.h

Issue 2700613003: Enable find-in-page across GuestViews. (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/find_request_manager.h
diff --git a/content/browser/find_request_manager.h b/content/browser/find_request_manager.h
index 5a6b3988d1083017d35dc8b6bd59e33a4c7a315e..245ab6992d6d2b16324a7b7ef820510fa65e5e7f 100644
--- a/content/browser/find_request_manager.h
+++ b/content/browser/find_request_manager.h
@@ -27,11 +27,12 @@ class WebContentsImpl;
// initiated/received through a WebContents. It coordinates searching across
// multiple (potentially out-of-process) frames, handles the aggregation of find
// results from each frame, and facilitates active match traversal. It is
-// instantiated once per WebContents, and is owned by that WebContents.
-class CONTENT_EXPORT FindRequestManager : public WebContentsObserver {
+// instantiated once per top-level WebContents, and is owned by that
+// WebContents.
+class CONTENT_EXPORT FindRequestManager {
public:
explicit FindRequestManager(WebContentsImpl* web_contents);
- ~FindRequestManager() override;
+ ~FindRequestManager();
// Initiates a find operation for |search_text| with the options specified in
// |options|. |request_id| uniquely identifies the find request.
@@ -84,6 +85,8 @@ class CONTENT_EXPORT FindRequestManager : public WebContentsObserver {
// frame ID, find request ID, or find match rects version number.
static const int kInvalidId;
+ class FrameObserver;
+
// The request data for a single find request.
struct FindRequest {
// The find request ID that uniquely identifies this find request.
@@ -102,13 +105,6 @@ class CONTENT_EXPORT FindRequestManager : public WebContentsObserver {
: id(id), search_text(search_text), options(options) {}
};
- // WebContentsObserver implementation.
- void DidFinishLoad(RenderFrameHost* rfh, const GURL& validated_url) override;
- void RenderFrameDeleted(RenderFrameHost* rfh) override;
- void RenderFrameHostChanged(RenderFrameHost* old_host,
- RenderFrameHost* new_host) override;
- void FrameDeleted(RenderFrameHost* rfh) override;
-
// Resets all of the per-session state for a new find-in-page session.
void Reset(const FindRequest& initial_request);
@@ -248,7 +244,9 @@ class CONTENT_EXPORT FindRequestManager : public WebContentsObserver {
} match_rects_;
#endif
- // The WebContents that owns this FindRequestManager.
+ // The WebContents that owns this FindRequestManager. This also defines the
+ // scope of all find sessions. Only frames in |contents_| and any inner
+ // WebContentses within it will be searched.
WebContentsImpl* const contents_;
// The request ID of the initial find request in the current find-in-page
@@ -306,6 +304,12 @@ class CONTENT_EXPORT FindRequestManager : public WebContentsObserver {
// Keeps track of the find request ID of the last find reply reported via
// NotifyFindReply().
int last_reported_id_;
+
+ // WebContentsObservers to observe frame changes in |contents_| and its inner
+ // WebContentses.
+ std::vector<std::unique_ptr<FrameObserver>> frame_observers_;
+
+ DISALLOW_COPY_AND_ASSIGN(FindRequestManager);
};
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698