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#include "chrome/browser/search/most_visited_iframe_source.h" 6 7#include "base/metrics/histogram.h" 8#include "base/strings/string_number_conversions.h" 9#include "base/strings/stringprintf.h" 10#include "chrome/common/url_constants.h" 11#include "content/public/browser/user_metrics.h" 12#include "grit/browser_resources.h" 13#include "net/base/url_util.h" 14#include "url/gurl.h" 15 16namespace { 17 18const char kTitleHTMLPath[] = "/title.html"; 19const char kTitleCSSPath[] = "/title.css"; 20const char kTitleJSPath[] = "/title.js"; 21const char kThumbnailHTMLPath[] = "/thumbnail.html"; 22const char kThumbnailCSSPath[] = "/thumbnail.css"; 23const char kThumbnailJSPath[] = "/thumbnail.js"; 24const char kUtilJSPath[] = "/util.js"; 25const char kCommonCSSPath[] = "/common.css"; 26 27} // namespace 28 29MostVisitedIframeSource::MostVisitedIframeSource() { 30} 31 32MostVisitedIframeSource::~MostVisitedIframeSource() { 33} 34 35const int MostVisitedIframeSource::kNumMostVisited = 8; 36const char MostVisitedIframeSource::kMostVisitedHistogramName[] = 37 "NewTabPage.MostVisited"; 38 39std::string MostVisitedIframeSource::GetSource() const { 40 return chrome::kChromeSearchMostVisitedHost; 41} 42 43void MostVisitedIframeSource::StartDataRequest( 44 const std::string& path_and_query, 45 int render_process_id, 46 int render_frame_id, 47 const content::URLDataSource::GotDataCallback& callback) { 48 GURL url(chrome::kChromeSearchMostVisitedUrl + path_and_query); 49 std::string path(url.path()); 50 if (path == kTitleHTMLPath) { 51 SendResource(IDR_MOST_VISITED_TITLE_HTML, callback); 52 } else if (path == kTitleCSSPath) { 53 SendResource(IDR_MOST_VISITED_TITLE_CSS, callback); 54 } else if (path == kTitleJSPath) { 55 SendResource(IDR_MOST_VISITED_TITLE_JS, callback); 56 } else if (path == kThumbnailHTMLPath) { 57 SendResource(IDR_MOST_VISITED_THUMBNAIL_HTML, callback); 58 } else if (path == kThumbnailCSSPath) { 59 SendResource(IDR_MOST_VISITED_THUMBNAIL_CSS, callback); 60 } else if (path == kThumbnailJSPath) { 61 SendJSWithOrigin(IDR_MOST_VISITED_THUMBNAIL_JS, render_process_id, 62 render_frame_id, callback); 63 } else if (path == kUtilJSPath) { 64 SendJSWithOrigin(IDR_MOST_VISITED_UTIL_JS, render_process_id, 65 render_frame_id, callback); 66 } else if (path == kCommonCSSPath) { 67 SendResource(IDR_MOST_VISITED_IFRAME_CSS, callback); 68 } else { 69 callback.Run(NULL); 70 } 71} 72 73bool MostVisitedIframeSource::ServesPath(const std::string& path) const { 74 return path == kTitleHTMLPath || path == kTitleCSSPath || 75 path == kTitleJSPath || path == kThumbnailHTMLPath || 76 path == kThumbnailCSSPath || path == kThumbnailJSPath || 77 path == kUtilJSPath || path == kCommonCSSPath; 78} 79