blob: 2c6716040522e145aef766635121ef59e4751b6c [file] [log] [blame]
// Copyright (c) 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_BROWSER_API_DECLARATIVE_CONTENT_CONTENT_RULES_REGISTRY_H__
#define EXTENSIONS_BROWSER_API_DECLARATIVE_CONTENT_CONTENT_RULES_REGISTRY_H__
#include <string>
#include "base/macros.h"
#include "content/public/browser/browser_thread.h"
#include "extensions/browser/api/declarative/rules_registry.h"
namespace content {
class BrowserContext;
class NavigationHandle;
class WebContents;
}
namespace extensions {
// This class acts as an //extensions-side interface for ContentRulesRegistry
// to allow RulesRegistryService to be moved to //extensions.
// TODO(wjmaclean): Remove this once ContentRulesRegistry moves to
// //extensions.
//
// Note: when dealing with WebContents associated with OffTheRecord contexts,
// functions on this interface must be invoked for BOTH the Original and
// OffTheRecord ContentRulesRegistry instances. This is necessary because the
// Original ContentRulesRegistry instance handles spanning-mode incognito
// extensions.
class ContentRulesRegistry : public RulesRegistry {
public:
ContentRulesRegistry(content::BrowserContext* browser_context,
const std::string& event_name,
content::BrowserThread::ID owner_thread,
RulesCacheDelegate* cache_delegate,
int rules_registry_id)
: RulesRegistry(browser_context,
event_name,
owner_thread,
cache_delegate,
rules_registry_id) {}
// Notifies the registry that it should evaluate rules for |contents|.
virtual void MonitorWebContentsForRuleEvaluation(
content::WebContents* contents) = 0;
// Applies all content rules given that a tab was just navigated.
// This corresponds to the notification of the same name in
// content::WebContentsObserver.
virtual void DidFinishNavigation(
content::WebContents* tab,
content::NavigationHandle* navigation_handle) = 0;
protected:
~ContentRulesRegistry() override {}
private:
DISALLOW_COPY_AND_ASSIGN(ContentRulesRegistry);
};
} // namespace extensions
#endif // EXTENSIONS_BROWSER_API_DECLARATIVE_CONTENT_CONTENT_RULES_REGISTRY_H__