// Copyright 2013 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 CHROME_RENDERER_SEARCHBOX_SEARCH_BOUNCER_H_ #define CHROME_RENDERER_SEARCHBOX_SEARCH_BOUNCER_H_ #include <vector> #include "base/basictypes.h" #include "base/gtest_prod_util.h" #include "content/public/renderer/render_process_observer.h" #include "url/gurl.h" namespace IPC { class Message; } // SearchBouncer tracks a set of URLs which should be transferred back to the // browser process for potential reassignment to an Instant renderer process. class SearchBouncer : public content::RenderProcessObserver { public: SearchBouncer(); virtual ~SearchBouncer(); // Returns whether a navigation to |url| should bounce back to the browser as // a potential Instant url. See chrome::ShouldAssignURLToInstantRenderer(). bool ShouldFork(const GURL& url) const; // Returns whether |url| is a valid Instant new tab page URL. bool IsNewTabPage(const GURL& url) const; // Exposed for testing. void OnSetSearchURLs(std::vector<GURL> search_urls, GURL new_tab_page_url); private: FRIEND_TEST_ALL_PREFIXES(SearchBouncerTest, SetSearchURLs); // From RenderProcessObserver: virtual bool OnControlMessageReceived(const IPC::Message& message) OVERRIDE; // URLs to bounce back to the browser. std::vector<GURL> search_urls_; GURL new_tab_page_url_; DISALLOW_COPY_AND_ASSIGN(SearchBouncer); }; #endif // CHROME_RENDERER_SEARCHBOX_SEARCH_BOUNCER_H_