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 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
126 // | 126 // |
127 // - ResourceLoaderOptions argument will be passed to the FetchRequest | 127 // - ResourceLoaderOptions argument will be passed to the FetchRequest |
128 // that this ThreadableLoader creates. It can be altered e.g. when | 128 // that this ThreadableLoader creates. It can be altered e.g. when |
129 // redirect happens. | 129 // redirect happens. |
130 class CORE_EXPORT ThreadableLoader : public RefCounted<ThreadableLoader> { | 130 class CORE_EXPORT ThreadableLoader : public RefCounted<ThreadableLoader> { |
131 WTF_MAKE_NONCOPYABLE(ThreadableLoader); | 131 WTF_MAKE_NONCOPYABLE(ThreadableLoader); |
132 public: | 132 public: |
133 // ThreadableLoaderClient methods may not destroy the ThreadableLoader | 133 // ThreadableLoaderClient methods may not destroy the ThreadableLoader |
134 // instance in them. | 134 // instance in them. |
135 static void loadResourceSynchronously(ExecutionContext&, const ResourceReque st&, ThreadableLoaderClient&, const ThreadableLoaderOptions&, const ResourceLoad erOptions&); | 135 static void loadResourceSynchronously(ExecutionContext&, const ResourceReque st&, ThreadableLoaderClient&, const ThreadableLoaderOptions&, const ResourceLoad erOptions&); |
136 | |
137 // This method never returns nullptr. | |
138 // | |
139 // This method must always be followed by |start()| call. | |
140 // |ThreadableLoaderClient| methods are never called before |start()| call. | |
141 // | |
142 // The async loading feature is separated into the |create()| method and | |
143 // and the |start()| method in order to: | |
144 // - reduce work done in a constructor | |
145 // - not to ask the users to handle fail in the constructor and other async | |
hiroshige
2016/01/26 08:44:50
nit: s/ fail / failures / ?
tyoshino (SeeGerritForStatus)
2016/01/29 12:36:52
Right! Fixed.
| |
146 // failures separately | |
147 // | |
136 // Loading completes when one of the following methods are called: | 148 // Loading completes when one of the following methods are called: |
137 // - didFinishLoading() | 149 // - didFinishLoading() |
138 // - didFail() | 150 // - didFail() |
139 // - didFailAccessControlCheck() | 151 // - didFailAccessControlCheck() |
140 // - didFailRedirectCheck() | 152 // - didFailRedirectCheck() |
141 // After any of these methods is called, no ThreadableLoaderClient method | 153 // After any of these methods is called, the loader won't call any of the |
142 // will be called. | 154 // |ThreadableLoaderClient| methods. |
hiroshige
2016/01/26 08:44:50
nit: I'm not sure about usage of |'s. Is there any
tyoshino (SeeGerritForStatus)
2016/01/29 12:36:52
IIRC, we've never discussed this seriously and for
| |
143 // | 155 // |
144 // When ThreadableLoader is destructed, ThreadableLoaderClient methods are | 156 // When a |ThreadableLoader| is destructed, any of the |
145 // NOT called in response to the destruction synchronously or after | 157 // |ThreadableLoaderClient| methods is NOT called in response to the |
146 // destruction. | 158 // destruction either synchronously or after destruction. |
147 // | 159 // |
148 // When ThreadableLoader::cancel() is called, | 160 // When |ThreadableLoader::cancel()| is called, |
149 // ThreadableLoaderClient::didFail() is called with ResourceError with | 161 // |ThreadableLoaderClient::didFail()| is called with a |ResourceError| |
150 // isCancellation() returning true, if any of didFinishLoading() or | 162 // with |isCancellation()| returning true, if any of |didFinishLoading()| |
151 // didFail.*() methods have not been called yet. (didFail() may be called | 163 // or didFail.*() methods have not been called yet. (didFail() may be |
152 // with a ResourceError with isCancellation() returning true also for | 164 // called with a |ResourceError| with |isCancellation()| returning true |
153 // cancellation happened inside the loader.) | 165 // also for cancellation happened inside the loader.) |
154 // | 166 // |
155 // ThreadableLoaderClient methods: | 167 // |ThreadableLoaderClient| methods: |
156 // - may call cancel() | 168 // - may call |cancel()| |
157 // - can destroy the ThreadableLoader instance in them (by clearing | 169 // - can destroy the |ThreadableLoader| instance in them (by clearing |
158 // RefPtr<ThreadableLoader>). | 170 // |RefPtr<ThreadableLoader>|). |
159 static PassRefPtr<ThreadableLoader> create(ExecutionContext&, ThreadableLoad erClient*, const ResourceRequest&, const ThreadableLoaderOptions&, const Resourc eLoaderOptions&); | 171 static PassRefPtr<ThreadableLoader> create(ExecutionContext&, ThreadableLoad erClient*, const ThreadableLoaderOptions&, const ResourceLoaderOptions&); |
172 | |
173 // The methods on the |ThreadableLoaderClient| passed on |create()| call | |
174 // may be called synchronous to |start()| call. | |
175 virtual void start(const ResourceRequest&) = 0; | |
160 | 176 |
161 // A ThreadableLoader may have a timeout specified. It is possible, in some cases, for | 177 // A ThreadableLoader may have a timeout specified. It is possible, in some cases, for |
162 // the timeout to be overridden after the request is sent (for example, XMLH ttpRequests | 178 // the timeout to be overridden after the request is sent (for example, XMLH ttpRequests |
163 // may override their timeout setting after sending). | 179 // may override their timeout setting after sending). |
164 // | 180 // |
165 // Set a new timeout relative to the time the request started, in millisecon ds. | 181 // Set a new timeout relative to the time the request started, in millisecon ds. |
166 virtual void overrideTimeout(unsigned long timeoutMilliseconds) = 0; | 182 virtual void overrideTimeout(unsigned long timeoutMilliseconds) = 0; |
167 | 183 |
168 virtual void cancel() = 0; | 184 virtual void cancel() = 0; |
169 | 185 |
170 virtual ~ThreadableLoader() { } | 186 virtual ~ThreadableLoader() { } |
171 | 187 |
172 protected: | 188 protected: |
173 ThreadableLoader() { } | 189 ThreadableLoader() { } |
174 }; | 190 }; |
175 | 191 |
176 } // namespace blink | 192 } // namespace blink |
177 | 193 |
178 #endif // ThreadableLoader_h | 194 #endif // ThreadableLoader_h |
OLD | NEW |