// Copyright 2015 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 IOS_WEB_BROWSER_URL_REWRITER_IMPL_H_ #define IOS_WEB_BROWSER_URL_REWRITER_IMPL_H_ #include #include "base/memory/singleton.h" #include "ios/web/public/browser_url_rewriter.h" class GURL; namespace web { // Concrete subclass of web::BrowserURLRewriter. Stores added URLRewriters in a // vector and performs URL rewrites if necessary. class BrowserURLRewriterImpl : public BrowserURLRewriter { public: // Returns the singleton instance. static BrowserURLRewriterImpl* GetInstance(); // BrowserURLRewriter implementation: bool RewriteURLIfNecessary(GURL* url, BrowserState* browser_state) override; void AddURLRewriter(URLRewriter rewriter) override; private: // This object is a singleton: BrowserURLRewriterImpl(); ~BrowserURLRewriterImpl() override; friend struct base::DefaultSingletonTraits; // The list of known URLRewriters. std::vector url_rewriters_; DISALLOW_COPY_AND_ASSIGN(BrowserURLRewriterImpl); }; } // namespace web #endif // IOS_WEB_BROWSER_URL_REWRITER_IMPL_H_