1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_RENDERER_SEARCHBOX_SEARCH_BOUNCER_H_ 6 #define CHROME_RENDERER_SEARCHBOX_SEARCH_BOUNCER_H_ 7 8 #include <vector> 9 10 #include "base/basictypes.h" 11 #include "base/gtest_prod_util.h" 12 #include "content/public/renderer/render_process_observer.h" 13 #include "url/gurl.h" 14 15 namespace IPC { 16 class Message; 17 } 18 19 // SearchBouncer tracks a set of URLs which should be transferred back to the 20 // browser process for potential reassignment to an Instant renderer process. 21 class SearchBouncer : public content::RenderProcessObserver { 22 public: 23 SearchBouncer(); 24 virtual ~SearchBouncer(); 25 26 // Returns whether a navigation to |url| should bounce back to the browser as 27 // a potential Instant url. See chrome::ShouldAssignURLToInstantRenderer(). 28 bool ShouldFork(const GURL& url) const; 29 30 // Returns whether |url| is a valid Instant new tab page URL. 31 bool IsNewTabPage(const GURL& url) const; 32 33 // Exposed for testing. 34 void OnSetSearchURLs(std::vector<GURL> search_urls, GURL new_tab_page_url); 35 36 private: 37 FRIEND_TEST_ALL_PREFIXES(SearchBouncerTest, SetSearchURLs); 38 39 // From RenderProcessObserver: 40 virtual bool OnControlMessageReceived(const IPC::Message& message) OVERRIDE; 41 42 // URLs to bounce back to the browser. 43 std::vector<GURL> search_urls_; 44 GURL new_tab_page_url_; 45 46 DISALLOW_COPY_AND_ASSIGN(SearchBouncer); 47 }; 48 49 #endif // CHROME_RENDERER_SEARCHBOX_SEARCH_BOUNCER_H_ 50