OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/workers_ui.h" | 5 #include "chrome/browser/ui/webui/workers_ui.h" |
6 | 6 |
7 #include "base/json/json_writer.h" | 7 #include "base/json/json_writer.h" |
8 #include "base/memory/ref_counted_memory.h" | 8 #include "base/memory/ref_counted_memory.h" |
9 #include "base/string_number_conversions.h" | 9 #include "base/string_number_conversions.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
(...skipping 16 matching lines...) Expand all Loading... |
27 static const char kOpenDevToolsCommand[] = "openDevTools"; | 27 static const char kOpenDevToolsCommand[] = "openDevTools"; |
28 | 28 |
29 static const char kWorkerProcessHostIdField[] = "workerProcessHostId"; | 29 static const char kWorkerProcessHostIdField[] = "workerProcessHostId"; |
30 static const char kWorkerRouteIdField[] = "workerRouteId"; | 30 static const char kWorkerRouteIdField[] = "workerRouteId"; |
31 static const char kUrlField[] = "url"; | 31 static const char kUrlField[] = "url"; |
32 static const char kNameField[] = "name"; | 32 static const char kNameField[] = "name"; |
33 static const char kPidField[] = "pid"; | 33 static const char kPidField[] = "pid"; |
34 | 34 |
35 namespace { | 35 namespace { |
36 | 36 |
37 class WorkersUIHTMLSource : public ChromeURLDataManager::DataSource { | 37 class WorkersUIHTMLSource : public ChromeWebUIDataSource { |
38 public: | 38 public: |
39 WorkersUIHTMLSource(); | 39 WorkersUIHTMLSource(); |
40 | 40 |
41 virtual void StartDataRequest(const std::string& path, | 41 virtual void StartDataRequest(const std::string& path, |
42 bool is_incognito, | 42 bool is_incognito, |
43 int request_id); | 43 int request_id); |
44 | |
45 virtual std::string GetMimeType(const std::string&) const; | |
46 | |
47 private: | 44 private: |
48 ~WorkersUIHTMLSource() {} | 45 ~WorkersUIHTMLSource() {} |
49 | |
50 void SendSharedWorkersData(int request_id); | 46 void SendSharedWorkersData(int request_id); |
51 | |
52 DISALLOW_COPY_AND_ASSIGN(WorkersUIHTMLSource); | 47 DISALLOW_COPY_AND_ASSIGN(WorkersUIHTMLSource); |
53 }; | 48 }; |
54 | 49 |
55 WorkersUIHTMLSource::WorkersUIHTMLSource() | 50 WorkersUIHTMLSource::WorkersUIHTMLSource() |
56 : DataSource(chrome::kChromeUIWorkersHost, NULL) { | 51 : ChromeWebUIDataSource(chrome::kChromeUIWorkersHost, NULL) { |
| 52 add_resource_path("workers.js", IDR_WORKERS_INDEX_JS); |
| 53 set_default_resource(IDR_WORKERS_INDEX_HTML); |
57 } | 54 } |
58 | 55 |
59 void WorkersUIHTMLSource::StartDataRequest(const std::string& path, | 56 void WorkersUIHTMLSource::StartDataRequest(const std::string& path, |
60 bool is_incognito, | 57 bool is_incognito, |
61 int request_id) { | 58 int request_id) { |
62 if (path == kWorkersDataFile) { | 59 if (path == kWorkersDataFile) { |
63 SendSharedWorkersData(request_id); | 60 SendSharedWorkersData(request_id); |
64 } else { | 61 } else { |
65 int idr = IDR_WORKERS_INDEX_HTML; | 62 ChromeWebUIDataSource::StartDataRequest(path, is_incognito, request_id); |
66 scoped_refptr<RefCountedStaticMemory> response( | |
67 ResourceBundle::GetSharedInstance().LoadDataResourceBytes(idr)); | |
68 SendResponse(request_id, response); | |
69 } | 63 } |
70 } | 64 } |
71 | 65 |
72 std::string WorkersUIHTMLSource::GetMimeType(const std::string& path) const { | |
73 if (EndsWith(path, ".css", false)) | |
74 return "text/css"; | |
75 if (EndsWith(path, ".js", false)) | |
76 return "application/javascript"; | |
77 if (EndsWith(path, ".json", false)) | |
78 return "plain/text"; | |
79 return "text/html"; | |
80 } | |
81 | |
82 void WorkersUIHTMLSource::SendSharedWorkersData(int request_id) { | 66 void WorkersUIHTMLSource::SendSharedWorkersData(int request_id) { |
83 ListValue workers_list; | 67 ListValue workers_list; |
84 BrowserChildProcessHost::Iterator iter(ChildProcessInfo::WORKER_PROCESS); | 68 BrowserChildProcessHost::Iterator iter(ChildProcessInfo::WORKER_PROCESS); |
85 for (; !iter.Done(); ++iter) { | 69 for (; !iter.Done(); ++iter) { |
86 WorkerProcessHost* worker = static_cast<WorkerProcessHost*>(*iter); | 70 WorkerProcessHost* worker = static_cast<WorkerProcessHost*>(*iter); |
87 const WorkerProcessHost::Instances& instances = worker->instances(); | 71 const WorkerProcessHost::Instances& instances = worker->instances(); |
88 for (WorkerProcessHost::Instances::const_iterator i = instances.begin(); | 72 for (WorkerProcessHost::Instances::const_iterator i = instances.begin(); |
89 i != instances.end(); ++i) { | 73 i != instances.end(); ++i) { |
90 if (!i->shared()) | 74 if (!i->shared()) |
91 continue; | 75 continue; |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 WorkersDOMHandler* handler = new WorkersDOMHandler(); | 142 WorkersDOMHandler* handler = new WorkersDOMHandler(); |
159 AddMessageHandler(handler); | 143 AddMessageHandler(handler); |
160 handler->Attach(this); | 144 handler->Attach(this); |
161 | 145 |
162 WorkersUIHTMLSource* html_source = new WorkersUIHTMLSource(); | 146 WorkersUIHTMLSource* html_source = new WorkersUIHTMLSource(); |
163 | 147 |
164 // Set up the chrome://workers/ source. | 148 // Set up the chrome://workers/ source. |
165 Profile* profile = Profile::FromBrowserContext(contents->browser_context()); | 149 Profile* profile = Profile::FromBrowserContext(contents->browser_context()); |
166 profile->GetChromeURLDataManager()->AddDataSource(html_source); | 150 profile->GetChromeURLDataManager()->AddDataSource(html_source); |
167 } | 151 } |
OLD | NEW |