OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/webui/devtools_ui.h" | 5 #include "chrome/browser/ui/webui/devtools_ui.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/memory/ref_counted_memory.h" | 9 #include "base/memory/ref_counted_memory.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 if (EndsWith(filename, ".html", false)) { | 88 if (EndsWith(filename, ".html", false)) { |
89 return "text/html"; | 89 return "text/html"; |
90 } else if (EndsWith(filename, ".css", false)) { | 90 } else if (EndsWith(filename, ".css", false)) { |
91 return "text/css"; | 91 return "text/css"; |
92 } else if (EndsWith(filename, ".js", false)) { | 92 } else if (EndsWith(filename, ".js", false)) { |
93 return "application/javascript"; | 93 return "application/javascript"; |
94 } else if (EndsWith(filename, ".png", false)) { | 94 } else if (EndsWith(filename, ".png", false)) { |
95 return "image/png"; | 95 return "image/png"; |
96 } else if (EndsWith(filename, ".gif", false)) { | 96 } else if (EndsWith(filename, ".gif", false)) { |
97 return "image/gif"; | 97 return "image/gif"; |
98 } else if (EndsWith(filename, ".svg", false)) { | |
99 return "image/svg+xml"; | |
100 } else if (EndsWith(filename, ".ttf", false)) { | |
101 return "application/octet-stream"; | |
102 } else if (EndsWith(filename, ".woff", false)) { | |
103 return "application/font-woff"; | |
104 } else if (EndsWith(filename, ".manifest", false)) { | 98 } else if (EndsWith(filename, ".manifest", false)) { |
105 return "text/cache-manifest"; | 99 return "text/cache-manifest"; |
106 } | 100 } |
107 NOTREACHED(); | 101 NOTREACHED(); |
108 return "text/plain"; | 102 return "text/plain"; |
109 } | 103 } |
110 | 104 |
111 // An URLDataSource implementation that handles chrome-devtools://devtools/ | 105 // An URLDataSource implementation that handles chrome-devtools://devtools/ |
112 // requests. Three types of requests could be handled based on the URL path: | 106 // requests. Three types of requests could be handled based on the URL path: |
113 // 1. /bundled/: bundled DevTools frontend is served. | 107 // 1. /bundled/: bundled DevTools frontend is served. |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 GURL url = GURL(kRemoteFrontendBase + path); | 173 GURL url = GURL(kRemoteFrontendBase + path); |
180 CHECK_EQ(url.host(), kRemoteFrontendDomain); | 174 CHECK_EQ(url.host(), kRemoteFrontendDomain); |
181 new FetchRequest(request_context_.get(), url, callback); | 175 new FetchRequest(request_context_.get(), url, callback); |
182 } | 176 } |
183 | 177 |
184 virtual std::string GetMimeType(const std::string& path) const OVERRIDE { | 178 virtual std::string GetMimeType(const std::string& path) const OVERRIDE { |
185 return GetMimeTypeForPath(path); | 179 return GetMimeTypeForPath(path); |
186 } | 180 } |
187 | 181 |
188 virtual bool ShouldAddContentSecurityPolicy() const OVERRIDE { | 182 virtual bool ShouldAddContentSecurityPolicy() const OVERRIDE { |
189 // Required as the Dart Observatory is bundled as its own iframe hosted on | |
190 // chrome-devtools. | |
191 return true; | |
192 } | |
193 | |
194 virtual bool ShouldDenyXFrameOptions() const OVERRIDE { | |
195 // Required as the Dart Observatory is bundled as its own iframe hosted on | |
196 // chrome-devtools. | |
197 return false; | 183 return false; |
198 } | 184 } |
199 | 185 |
200 virtual bool ShouldServeMimeTypeAsContentTypeHeader() const OVERRIDE { | 186 virtual bool ShouldServeMimeTypeAsContentTypeHeader() const OVERRIDE { |
201 return true; | 187 return true; |
202 } | 188 } |
203 | 189 |
204 virtual std::string GetContentSecurityPolicyFrameSrc() const OVERRIDE { | |
205 // The Dart Observatory is bundled as its own iframe. | |
206 return "frame-src chrome-devtools://devtools/bundled/Observatory/index_devto
ols.html;"; | |
207 } | |
208 | |
209 private: | 190 private: |
210 virtual ~DevToolsDataSource() {} | 191 virtual ~DevToolsDataSource() {} |
211 scoped_refptr<net::URLRequestContextGetter> request_context_; | 192 scoped_refptr<net::URLRequestContextGetter> request_context_; |
212 | 193 |
213 DISALLOW_COPY_AND_ASSIGN(DevToolsDataSource); | 194 DISALLOW_COPY_AND_ASSIGN(DevToolsDataSource); |
214 }; | 195 }; |
215 | 196 |
216 } // namespace | 197 } // namespace |
217 | 198 |
218 // static | 199 // static |
219 GURL DevToolsUI::GetProxyURL(const std::string& frontend_url) { | 200 GURL DevToolsUI::GetProxyURL(const std::string& frontend_url) { |
220 GURL url(frontend_url); | 201 GURL url(frontend_url); |
221 if (!url.is_valid() || url.host() != kRemoteFrontendDomain) { | 202 if (!url.is_valid() || url.host() != kRemoteFrontendDomain) { |
222 return GURL(kFallbackFrontendURL); | 203 return GURL(kFallbackFrontendURL); |
223 } | 204 } |
224 return GURL(base::StringPrintf("%s://%s/%s/%s", | 205 return GURL(base::StringPrintf("%s://%s/%s/%s", |
225 content::kChromeDevToolsScheme, | 206 content::kChromeDevToolsScheme, |
226 chrome::kChromeUIDevToolsHost, | 207 chrome::kChromeUIDevToolsHost, |
227 chrome::kChromeUIDevToolsRemotePath, | 208 chrome::kChromeUIDevToolsRemotePath, |
228 url.path().substr(1).c_str())); | 209 url.path().substr(1).c_str())); |
229 } | 210 } |
230 | 211 |
231 DevToolsUI::DevToolsUI(content::WebUI* web_ui) : WebUIController(web_ui) { | 212 DevToolsUI::DevToolsUI(content::WebUI* web_ui) : WebUIController(web_ui) { |
232 web_ui->SetBindings(0); | 213 web_ui->SetBindings(0); |
233 Profile* profile = Profile::FromWebUI(web_ui); | 214 Profile* profile = Profile::FromWebUI(web_ui); |
234 content::URLDataSource::Add( | 215 content::URLDataSource::Add( |
235 profile, | 216 profile, |
236 new DevToolsDataSource(profile->GetRequestContext())); | 217 new DevToolsDataSource(profile->GetRequestContext())); |
237 } | 218 } |
OLD | NEW |