| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 Member<DirectoryReader> m_reader; | 60 Member<DirectoryReader> m_reader; |
| 61 }; | 61 }; |
| 62 | 62 |
| 63 class DirectoryReader::ErrorCallbackHelper final : public ErrorCallback { | 63 class DirectoryReader::ErrorCallbackHelper final : public ErrorCallback { |
| 64 public: | 64 public: |
| 65 explicit ErrorCallbackHelper(DirectoryReader* reader) | 65 explicit ErrorCallbackHelper(DirectoryReader* reader) |
| 66 : m_reader(reader) | 66 : m_reader(reader) |
| 67 { | 67 { |
| 68 } | 68 } |
| 69 | 69 |
| 70 void handleEvent(FileError* error) override | 70 void handleEvent(DOMException* error) override |
| 71 { |
| 72 NOTREACHED(); |
| 73 } |
| 74 |
| 75 void handleEvent(FileError::ErrorCode error) override |
| 71 { | 76 { |
| 72 m_reader->onError(error); | 77 m_reader->onError(error); |
| 73 } | 78 } |
| 74 | 79 |
| 75 DEFINE_INLINE_VIRTUAL_TRACE() | 80 DEFINE_INLINE_VIRTUAL_TRACE() |
| 76 { | 81 { |
| 77 visitor->trace(m_reader); | 82 visitor->trace(m_reader); |
| 78 ErrorCallback::trace(visitor); | 83 ErrorCallback::trace(visitor); |
| 79 } | 84 } |
| 80 | 85 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 99 filesystem()->readDirectory(this, m_fullPath, new EntriesCallbackHelper(
this), new ErrorCallbackHelper(this)); | 104 filesystem()->readDirectory(this, m_fullPath, new EntriesCallbackHelper(
this), new ErrorCallbackHelper(this)); |
| 100 } | 105 } |
| 101 | 106 |
| 102 if (m_error) { | 107 if (m_error) { |
| 103 filesystem()->scheduleCallback(errorCallback, m_error); | 108 filesystem()->scheduleCallback(errorCallback, m_error); |
| 104 return; | 109 return; |
| 105 } | 110 } |
| 106 | 111 |
| 107 if (m_entriesCallback) { | 112 if (m_entriesCallback) { |
| 108 // Non-null m_entriesCallback means multiple readEntries() calls are mad
e concurrently. We don't allow doing it. | 113 // Non-null m_entriesCallback means multiple readEntries() calls are mad
e concurrently. We don't allow doing it. |
| 109 filesystem()->scheduleCallback(errorCallback, FileError::create(FileErro
r::INVALID_STATE_ERR)); | 114 filesystem()->scheduleCallback(errorCallback, FileError::INVALID_STATE_E
RR); |
| 110 return; | 115 return; |
| 111 } | 116 } |
| 112 | 117 |
| 113 if (!m_hasMoreEntries || !m_entries.isEmpty()) { | 118 if (!m_hasMoreEntries || !m_entries.isEmpty()) { |
| 114 filesystem()->scheduleCallback(entriesCallback, m_entries); | 119 filesystem()->scheduleCallback(entriesCallback, m_entries); |
| 115 m_entries.clear(); | 120 m_entries.clear(); |
| 116 return; | 121 return; |
| 117 } | 122 } |
| 118 | 123 |
| 119 m_entriesCallback = entriesCallback; | 124 m_entriesCallback = entriesCallback; |
| 120 m_errorCallback = errorCallback; | 125 m_errorCallback = errorCallback; |
| 121 } | 126 } |
| 122 | 127 |
| 123 void DirectoryReader::addEntries(const EntryHeapVector& entries) | 128 void DirectoryReader::addEntries(const EntryHeapVector& entries) |
| 124 { | 129 { |
| 125 m_entries.appendVector(entries); | 130 m_entries.appendVector(entries); |
| 126 m_errorCallback = nullptr; | 131 m_errorCallback = nullptr; |
| 127 if (m_entriesCallback) { | 132 if (m_entriesCallback) { |
| 128 EntriesCallback* entriesCallback = m_entriesCallback.release(); | 133 EntriesCallback* entriesCallback = m_entriesCallback.release(); |
| 129 EntryHeapVector entries; | 134 EntryHeapVector entries; |
| 130 entries.swap(m_entries); | 135 entries.swap(m_entries); |
| 131 entriesCallback->handleEvent(entries); | 136 entriesCallback->handleEvent(entries); |
| 132 } | 137 } |
| 133 } | 138 } |
| 134 | 139 |
| 135 void DirectoryReader::onError(FileError* error) | 140 void DirectoryReader::onError(FileError::ErrorCode error) |
| 136 { | 141 { |
| 137 m_error = error; | 142 m_error = error; |
| 138 m_entriesCallback = nullptr; | 143 m_entriesCallback = nullptr; |
| 139 if (m_errorCallback) { | 144 if (m_errorCallback) { |
| 140 ErrorCallback* errorCallback = m_errorCallback.release(); | 145 ErrorCallback* errorCallback = m_errorCallback.release(); |
| 141 errorCallback->handleEvent(error); | 146 errorCallback->handleEvent(error); |
| 142 } | 147 } |
| 143 } | 148 } |
| 144 | 149 |
| 145 DEFINE_TRACE(DirectoryReader) | 150 DEFINE_TRACE(DirectoryReader) |
| 146 { | 151 { |
| 147 visitor->trace(m_entries); | 152 visitor->trace(m_entries); |
| 148 visitor->trace(m_error); | |
| 149 visitor->trace(m_entriesCallback); | 153 visitor->trace(m_entriesCallback); |
| 150 visitor->trace(m_errorCallback); | 154 visitor->trace(m_errorCallback); |
| 151 DirectoryReaderBase::trace(visitor); | 155 DirectoryReaderBase::trace(visitor); |
| 152 } | 156 } |
| 153 | 157 |
| 154 } // namespace blink | 158 } // namespace blink |
| OLD | NEW |