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 |