blob: 9bbcff92180c924e2cb494e667d0e65e6d53f26e [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef EXTENSIONS_RENDERER_CONTENT_WATCHER_H_
#define EXTENSIONS_RENDERER_CONTENT_WATCHER_H_
#include <string>
#include <vector>
#include "third_party/WebKit/public/platform/WebVector.h"
namespace blink {
class WebString;
}
namespace content {
class RenderFrame;
}
namespace extensions {
// Handles watching the content of WebFrames to notify extensions when they
// match various patterns. This class tracks the set of relevant patterns (set
// by ExtensionMsg_WatchPages) and the set that match on each WebFrame, and
// sends a ExtensionHostMsg_OnWatchedPageChange whenever a RenderFrame's set
// changes.
class ContentWatcher {
public:
ContentWatcher();
~ContentWatcher();
// Handler for ExtensionMsg_WatchPages.
void OnWatchPages(const std::vector<std::string>& css_selectors);
void OnRenderFrameCreated(content::RenderFrame* render_frame);
private:
// If any of these selectors match on a page, we need to send an
// ExtensionHostMsg_OnWatchedPageChange back to the browser.
blink::WebVector<blink::WebString> css_selectors_;
DISALLOW_COPY_AND_ASSIGN(ContentWatcher);
};
} // namespace extensions
#endif // EXTENSIONS_RENDERER_CONTENT_WATCHER_H_