| 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 |