| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 WebFrameImpl* webFrame = WebFrameImpl::fromFrame(document->frame()); | 164 WebFrameImpl* webFrame = WebFrameImpl::fromFrame(document->frame()); |
| 165 OwnPtr<WebSharedWorker> webWorker; | 165 OwnPtr<WebSharedWorker> webWorker; |
| 166 webWorker = webFrame->client()->createSharedWorker(webFrame, url, name, getId(document)); | 166 webWorker = webFrame->client()->createSharedWorker(webFrame, url, name, getId(document)); |
| 167 | 167 |
| 168 if (!webWorker) { | 168 if (!webWorker) { |
| 169 // Existing worker does not match this url, so return an error back to the caller. | 169 // Existing worker does not match this url, so return an error back to the caller. |
| 170 ec = URL_MISMATCH_ERR; | 170 ec = URL_MISMATCH_ERR; |
| 171 return; | 171 return; |
| 172 } | 172 } |
| 173 | 173 |
| 174 WebKit::webKitClient()->sharedWorkerRepository()->addSharedWorker( |
| 175 webWorker.get(), getId(document)); |
| 176 |
| 174 // The loader object manages its own lifecycle (and the lifecycles of the two worker objects). | 177 // The loader object manages its own lifecycle (and the lifecycles of the two worker objects). |
| 175 // It will free itself once loading is completed. | 178 // It will free itself once loading is completed. |
| 176 SharedWorkerScriptLoader* loader = new SharedWorkerScriptLoader(worker, url, name, port.release(), webWorker.release()); | 179 SharedWorkerScriptLoader* loader = new SharedWorkerScriptLoader(worker, url, name, port.release(), webWorker.release()); |
| 177 loader->load(); | 180 loader->load(); |
| 178 } | 181 } |
| 179 | 182 |
| 180 void SharedWorkerRepository::documentDetached(Document* document) | 183 void SharedWorkerRepository::documentDetached(Document* document) |
| 181 { | 184 { |
| 182 WebSharedWorkerRepository* repo = WebKit::webKitClient()->sharedWorkerRepository(); | 185 WebSharedWorkerRepository* repo = WebKit::webKitClient()->sharedWorkerRepository(); |
| 183 if (repo) | 186 if (repo) |
| 184 repo->documentDetached(getId(document)); | 187 repo->documentDetached(getId(document)); |
| 185 } | 188 } |
| 186 | 189 |
| 187 bool SharedWorkerRepository::hasSharedWorkers(Document* document) | 190 bool SharedWorkerRepository::hasSharedWorkers(Document* document) |
| 188 { | 191 { |
| 189 WebSharedWorkerRepository* repo = WebKit::webKitClient()->sharedWorkerRepository(); | 192 WebSharedWorkerRepository* repo = WebKit::webKitClient()->sharedWorkerRepository(); |
| 190 return repo && repo->hasSharedWorkers(getId(document)); | 193 return repo && repo->hasSharedWorkers(getId(document)); |
| 191 } | 194 } |
| 192 | 195 |
| 193 | 196 |
| 194 | 197 |
| 195 } // namespace WebCore | 198 } // namespace WebCore |
| 196 | 199 |
| 197 #endif // ENABLE(SHARED_WORKERS) | 200 #endif // ENABLE(SHARED_WORKERS) |
| OLD | NEW |