// 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/blink/public/platform/web_vector.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_
