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_BROWSER_SEARCH_IFRAME_SOURCE_H_ 6 #define CHROME_BROWSER_SEARCH_IFRAME_SOURCE_H_ 7 8 #include "base/basictypes.h" 9 #include "base/compiler_specific.h" 10 #include "content/public/browser/url_data_source.h" 11 12 // Base class for URL data sources for chrome-search:// iframed content. 13 class IframeSource : public content::URLDataSource { 14 public: 15 IframeSource(); 16 virtual ~IframeSource(); 17 18 protected: 19 // Overridden from content::URLDataSource: 20 virtual std::string GetMimeType( 21 const std::string& path_and_query) const OVERRIDE; 22 virtual bool ShouldDenyXFrameOptions() const OVERRIDE; 23 virtual bool ShouldServiceRequest( 24 const net::URLRequest* request) const OVERRIDE; 25 26 // Returns whether this source should serve data for a particular path. 27 virtual bool ServesPath(const std::string& path) const = 0; 28 29 // Sends unmodified resource bytes. 30 void SendResource( 31 int resource_id, 32 const content::URLDataSource::GotDataCallback& callback); 33 34 // Sends Javascript with an expected postMessage origin interpolated. 35 void SendJSWithOrigin( 36 int resource_id, 37 int render_process_id, 38 int render_view_id, 39 const content::URLDataSource::GotDataCallback& callback); 40 41 // This is exposed for testing and should not be overridden. 42 // Sets |origin| to the URL of the render view identified by |process_id| and 43 // |render_view_id|. Returns true if successful and false if not, for example 44 // if the render view does not exist. 45 virtual bool GetOrigin( 46 int process_id, 47 int render_view_id, 48 std::string* origin) const; 49 50 DISALLOW_COPY_AND_ASSIGN(IframeSource); 51 }; 52 53 #endif // CHROME_BROWSER_SEARCH_IFRAME_SOURCE_H_ 54