| author | Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> | 
| Fri, 12 Mar 2010 15:48:51 +0200 | |
| branch | RCL_3 | 
| changeset 34 | 220a17280356 | 
| parent 0 | dd21522fd290 | 
| permissions | -rw-r--r-- | 
| 0 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 1 | /* | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 2 | * Copyright (C) 2007 Apple Inc. All rights reserved. | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 3 | * | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 4 | * Redistribution and use in source and binary forms, with or without | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 5 | * modification, are permitted provided that the following conditions | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 6 | * are met: | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 7 | * 1. Redistributions of source code must retain the above copyright | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 8 | * notice, this list of conditions and the following disclaimer. | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 9 | * 2. Redistributions in binary form must reproduce the above copyright | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 10 | * notice, this list of conditions and the following disclaimer in the | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 11 | * documentation and/or other materials provided with the distribution. | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 12 | * | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 13 | * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 14 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 15 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 16 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 17 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 18 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 19 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 20 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 21 | * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 22 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 23 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 24 | */ | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 25 | |
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 26 | #include "config.h" | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 27 | |
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 28 | #include "WebDocumentLoader.h" | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 29 | |
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 30 | using namespace WebCore; | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 31 | |
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 32 | WebDocumentLoader::WebDocumentLoader(const ResourceRequest& request, const SubstituteData& substituteData) | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 33 | : DocumentLoader(request, substituteData) | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 34 | , m_dataSource(0) | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 35 | , m_detachedDataSource(0) | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 36 | {
 | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 37 | } | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 38 | |
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 39 | WebDocumentLoader::~WebDocumentLoader() | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 40 | {
 | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 41 |     if (m_dataSource) {
 | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 42 | ASSERT(!m_detachedDataSource); | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 43 | m_dataSource->Release(); | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 44 | } | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 45 | } | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 46 | |
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 47 | void WebDocumentLoader::setDataSource(WebDataSource *dataSource) | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 48 | {
 | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 49 | ASSERT(!m_dataSource); | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 50 | m_dataSource = dataSource; | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 51 | if (m_dataSource) | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 52 | m_dataSource->AddRef(); | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 53 | } | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 54 | |
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 55 | WebDataSource* WebDocumentLoader::dataSource() const | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 56 | {
 | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 57 | return m_dataSource; | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 58 | } | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 59 | |
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 60 | void WebDocumentLoader::detachDataSource() | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 61 | {
 | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 62 | // we only call detachDataSource when the WebDataSource is freed - and we won't get there if m_dataSource is not | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 63 | // null (because that would mean the loader still has a reference to the data source) | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 64 | ASSERT(!m_dataSource); | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 65 | m_detachedDataSource = 0; | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 66 | } | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 67 | |
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 68 | void WebDocumentLoader::attachToFrame() | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 69 | {
 | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 70 | DocumentLoader::attachToFrame(); | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 71 |     if (m_detachedDataSource) {
 | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 72 | ASSERT(!m_dataSource); | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 73 | setDataSource(m_detachedDataSource); | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 74 | m_detachedDataSource = 0; | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 75 | } | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 76 | } | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 77 | |
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 78 | void WebDocumentLoader::detachFromFrame() | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 79 | {
 | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 80 | DocumentLoader::detachFromFrame(); | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 81 | m_detachedDataSource = m_dataSource; | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 82 |     if (m_dataSource) {
 | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 83 | WebDataSource* dataSourceToBeReleased = m_dataSource; | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 84 | // It's important to null out m_dataSource before calling release on the data source. That release can cause the data | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 85 | // source to be deleted - which ends up calling loader->detachDataSource() which makes the assumption that the loader no | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 86 | // longer holds a reference to the data source. | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 87 | m_dataSource = 0; | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 88 | dataSourceToBeReleased->Release(); | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 89 | } | 
| 
dd21522fd290
Revision: 200911
 Kiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com> parents: diff
changeset | 90 | } |