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 |