OLD | NEW |
(Empty) | |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "platform/mojo/FetchAPIRequestStructTraits.h" |
| 6 |
| 7 #include "mojo/public/cpp/bindings/map_traits_wtf_hash_map.h" |
| 8 #include "mojo/public/cpp/bindings/string_traits_wtf.h" |
| 9 #include "platform/blob/BlobData.h" |
| 10 #include "platform/mojo/KURLStructTraits.h" |
| 11 #include "platform/mojo/ReferrerStructTraits.h" |
| 12 #include "platform/weborigin/Referrer.h" |
| 13 #include "public/platform/WebReferrerPolicy.h" |
| 14 |
| 15 namespace mojo { |
| 16 |
| 17 namespace { |
| 18 |
| 19 // Struct traits context for the FetchAPIRequest type. Since getters are invoked |
| 20 // twice when serializing the type, this reduces the load for heavy members. |
| 21 struct FetchAPIRequestStructTraitsContext { |
| 22 FetchAPIRequestStructTraitsContext() = default; |
| 23 ~FetchAPIRequestStructTraitsContext() = default; |
| 24 |
| 25 WTF::HashMap<WTF::String, WTF::String> headers; |
| 26 }; |
| 27 |
| 28 } // namespace |
| 29 |
| 30 using blink::mojom::FetchCredentialsMode; |
| 31 using blink::mojom::FetchRedirectMode; |
| 32 using blink::mojom::FetchRequestMode; |
| 33 using blink::mojom::RequestContextFrameType; |
| 34 using blink::mojom::RequestContextType; |
| 35 |
| 36 FetchCredentialsMode |
| 37 EnumTraits<FetchCredentialsMode, blink::WebURLRequest::FetchCredentialsMode>:: |
| 38 ToMojom(blink::WebURLRequest::FetchCredentialsMode input) { |
| 39 switch (input) { |
| 40 case blink::WebURLRequest::FetchCredentialsModeOmit: |
| 41 return FetchCredentialsMode::OMIT; |
| 42 case blink::WebURLRequest::FetchCredentialsModeSameOrigin: |
| 43 return FetchCredentialsMode::SAME_ORIGIN; |
| 44 case blink::WebURLRequest::FetchCredentialsModeInclude: |
| 45 return FetchCredentialsMode::INCLUDE; |
| 46 case blink::WebURLRequest::FetchCredentialsModePassword: |
| 47 return FetchCredentialsMode::PASSWORD; |
| 48 } |
| 49 |
| 50 NOTREACHED(); |
| 51 return FetchCredentialsMode::OMIT; |
| 52 } |
| 53 |
| 54 bool EnumTraits<FetchCredentialsMode, |
| 55 blink::WebURLRequest::FetchCredentialsMode>:: |
| 56 FromMojom(FetchCredentialsMode input, |
| 57 blink::WebURLRequest::FetchCredentialsMode* out) { |
| 58 switch (input) { |
| 59 case FetchCredentialsMode::OMIT: |
| 60 *out = blink::WebURLRequest::FetchCredentialsModeOmit; |
| 61 return true; |
| 62 case FetchCredentialsMode::SAME_ORIGIN: |
| 63 *out = blink::WebURLRequest::FetchCredentialsModeSameOrigin; |
| 64 return true; |
| 65 case FetchCredentialsMode::INCLUDE: |
| 66 *out = blink::WebURLRequest::FetchCredentialsModeInclude; |
| 67 return true; |
| 68 case FetchCredentialsMode::PASSWORD: |
| 69 *out = blink::WebURLRequest::FetchCredentialsModePassword; |
| 70 return true; |
| 71 } |
| 72 |
| 73 return false; |
| 74 } |
| 75 |
| 76 FetchRedirectMode |
| 77 EnumTraits<FetchRedirectMode, blink::WebURLRequest::FetchRedirectMode>::ToMojom( |
| 78 blink::WebURLRequest::FetchRedirectMode input) { |
| 79 switch (input) { |
| 80 case blink::WebURLRequest::FetchRedirectModeFollow: |
| 81 return FetchRedirectMode::FOLLOW; |
| 82 case blink::WebURLRequest::FetchRedirectModeError: |
| 83 return FetchRedirectMode::ERROR_MODE; |
| 84 case blink::WebURLRequest::FetchRedirectModeManual: |
| 85 return FetchRedirectMode::MANUAL; |
| 86 } |
| 87 |
| 88 NOTREACHED(); |
| 89 return FetchRedirectMode::ERROR_MODE; |
| 90 } |
| 91 |
| 92 bool EnumTraits<FetchRedirectMode, blink::WebURLRequest::FetchRedirectMode>:: |
| 93 FromMojom(FetchRedirectMode input, |
| 94 blink::WebURLRequest::FetchRedirectMode* out) { |
| 95 switch (input) { |
| 96 case FetchRedirectMode::FOLLOW: |
| 97 *out = blink::WebURLRequest::FetchRedirectModeFollow; |
| 98 return true; |
| 99 case FetchRedirectMode::ERROR_MODE: |
| 100 *out = blink::WebURLRequest::FetchRedirectModeError; |
| 101 return true; |
| 102 case FetchRedirectMode::MANUAL: |
| 103 *out = blink::WebURLRequest::FetchRedirectModeManual; |
| 104 return true; |
| 105 } |
| 106 |
| 107 return false; |
| 108 } |
| 109 |
| 110 FetchRequestMode |
| 111 EnumTraits<FetchRequestMode, blink::WebURLRequest::FetchRequestMode>::ToMojom( |
| 112 blink::WebURLRequest::FetchRequestMode input) { |
| 113 switch (input) { |
| 114 case blink::WebURLRequest::FetchRequestModeSameOrigin: |
| 115 return FetchRequestMode::SAME_ORIGIN; |
| 116 case blink::WebURLRequest::FetchRequestModeNoCORS: |
| 117 return FetchRequestMode::NO_CORS; |
| 118 case blink::WebURLRequest::FetchRequestModeCORS: |
| 119 return FetchRequestMode::CORS; |
| 120 case blink::WebURLRequest::FetchRequestModeCORSWithForcedPreflight: |
| 121 return FetchRequestMode::CORS_WITH_FORCED_PREFLIGHT; |
| 122 case blink::WebURLRequest::FetchRequestModeNavigate: |
| 123 return FetchRequestMode::NAVIGATE; |
| 124 } |
| 125 |
| 126 NOTREACHED(); |
| 127 return FetchRequestMode::NO_CORS; |
| 128 } |
| 129 |
| 130 bool EnumTraits<FetchRequestMode, blink::WebURLRequest::FetchRequestMode>:: |
| 131 FromMojom(FetchRequestMode input, |
| 132 blink::WebURLRequest::FetchRequestMode* out) { |
| 133 switch (input) { |
| 134 case FetchRequestMode::SAME_ORIGIN: |
| 135 *out = blink::WebURLRequest::FetchRequestModeSameOrigin; |
| 136 return true; |
| 137 case FetchRequestMode::NO_CORS: |
| 138 *out = blink::WebURLRequest::FetchRequestModeNoCORS; |
| 139 return true; |
| 140 case FetchRequestMode::CORS: |
| 141 *out = blink::WebURLRequest::FetchRequestModeCORS; |
| 142 return true; |
| 143 case FetchRequestMode::CORS_WITH_FORCED_PREFLIGHT: |
| 144 *out = blink::WebURLRequest::FetchRequestModeCORSWithForcedPreflight; |
| 145 return true; |
| 146 case FetchRequestMode::NAVIGATE: |
| 147 *out = blink::WebURLRequest::FetchRequestModeNavigate; |
| 148 return true; |
| 149 } |
| 150 |
| 151 return false; |
| 152 } |
| 153 |
| 154 RequestContextFrameType |
| 155 EnumTraits<RequestContextFrameType, blink::WebURLRequest::FrameType>::ToMojom( |
| 156 blink::WebURLRequest::FrameType input) { |
| 157 switch (input) { |
| 158 case blink::WebURLRequest::FrameTypeAuxiliary: |
| 159 return RequestContextFrameType::AUXILIARY; |
| 160 case blink::WebURLRequest::FrameTypeNested: |
| 161 return RequestContextFrameType::NESTED; |
| 162 case blink::WebURLRequest::FrameTypeNone: |
| 163 return RequestContextFrameType::NONE; |
| 164 case blink::WebURLRequest::FrameTypeTopLevel: |
| 165 return RequestContextFrameType::TOP_LEVEL; |
| 166 } |
| 167 |
| 168 NOTREACHED(); |
| 169 return RequestContextFrameType::NONE; |
| 170 } |
| 171 |
| 172 bool EnumTraits<RequestContextFrameType, blink::WebURLRequest::FrameType>:: |
| 173 FromMojom(RequestContextFrameType input, |
| 174 blink::WebURLRequest::FrameType* out) { |
| 175 switch (input) { |
| 176 case RequestContextFrameType::AUXILIARY: |
| 177 *out = blink::WebURLRequest::FrameTypeAuxiliary; |
| 178 return true; |
| 179 case RequestContextFrameType::NESTED: |
| 180 *out = blink::WebURLRequest::FrameTypeNested; |
| 181 return true; |
| 182 case RequestContextFrameType::NONE: |
| 183 *out = blink::WebURLRequest::FrameTypeNone; |
| 184 return true; |
| 185 case RequestContextFrameType::TOP_LEVEL: |
| 186 *out = blink::WebURLRequest::FrameTypeTopLevel; |
| 187 return true; |
| 188 } |
| 189 |
| 190 return false; |
| 191 } |
| 192 |
| 193 RequestContextType |
| 194 EnumTraits<RequestContextType, blink::WebURLRequest::RequestContext>::ToMojom( |
| 195 blink::WebURLRequest::RequestContext input) { |
| 196 switch (input) { |
| 197 case blink::WebURLRequest::RequestContextUnspecified: |
| 198 return RequestContextType::UNSPECIFIED; |
| 199 case blink::WebURLRequest::RequestContextAudio: |
| 200 return RequestContextType::AUDIO; |
| 201 case blink::WebURLRequest::RequestContextBeacon: |
| 202 return RequestContextType::BEACON; |
| 203 case blink::WebURLRequest::RequestContextCSPReport: |
| 204 return RequestContextType::CSP_REPORT; |
| 205 case blink::WebURLRequest::RequestContextDownload: |
| 206 return RequestContextType::DOWNLOAD; |
| 207 case blink::WebURLRequest::RequestContextEmbed: |
| 208 return RequestContextType::EMBED; |
| 209 case blink::WebURLRequest::RequestContextEventSource: |
| 210 return RequestContextType::EVENT_SOURCE; |
| 211 case blink::WebURLRequest::RequestContextFavicon: |
| 212 return RequestContextType::FAVICON; |
| 213 case blink::WebURLRequest::RequestContextFetch: |
| 214 return RequestContextType::FETCH; |
| 215 case blink::WebURLRequest::RequestContextFont: |
| 216 return RequestContextType::FONT; |
| 217 case blink::WebURLRequest::RequestContextForm: |
| 218 return RequestContextType::FORM; |
| 219 case blink::WebURLRequest::RequestContextFrame: |
| 220 return RequestContextType::FRAME; |
| 221 case blink::WebURLRequest::RequestContextHyperlink: |
| 222 return RequestContextType::HYPERLINK; |
| 223 case blink::WebURLRequest::RequestContextIframe: |
| 224 return RequestContextType::IFRAME; |
| 225 case blink::WebURLRequest::RequestContextImage: |
| 226 return RequestContextType::IMAGE; |
| 227 case blink::WebURLRequest::RequestContextImageSet: |
| 228 return RequestContextType::IMAGE_SET; |
| 229 case blink::WebURLRequest::RequestContextImport: |
| 230 return RequestContextType::IMPORT; |
| 231 case blink::WebURLRequest::RequestContextInternal: |
| 232 return RequestContextType::INTERNAL; |
| 233 case blink::WebURLRequest::RequestContextLocation: |
| 234 return RequestContextType::LOCATION; |
| 235 case blink::WebURLRequest::RequestContextManifest: |
| 236 return RequestContextType::MANIFEST; |
| 237 case blink::WebURLRequest::RequestContextObject: |
| 238 return RequestContextType::OBJECT; |
| 239 case blink::WebURLRequest::RequestContextPing: |
| 240 return RequestContextType::PING; |
| 241 case blink::WebURLRequest::RequestContextPlugin: |
| 242 return RequestContextType::PLUGIN; |
| 243 case blink::WebURLRequest::RequestContextPrefetch: |
| 244 return RequestContextType::PREFETCH; |
| 245 case blink::WebURLRequest::RequestContextScript: |
| 246 return RequestContextType::SCRIPT; |
| 247 case blink::WebURLRequest::RequestContextServiceWorker: |
| 248 return RequestContextType::SERVICE_WORKER; |
| 249 case blink::WebURLRequest::RequestContextSharedWorker: |
| 250 return RequestContextType::SHARED_WORKER; |
| 251 case blink::WebURLRequest::RequestContextSubresource: |
| 252 return RequestContextType::SUBRESOURCE; |
| 253 case blink::WebURLRequest::RequestContextStyle: |
| 254 return RequestContextType::STYLE; |
| 255 case blink::WebURLRequest::RequestContextTrack: |
| 256 return RequestContextType::TRACK; |
| 257 case blink::WebURLRequest::RequestContextVideo: |
| 258 return RequestContextType::VIDEO; |
| 259 case blink::WebURLRequest::RequestContextWorker: |
| 260 return RequestContextType::WORKER; |
| 261 case blink::WebURLRequest::RequestContextXMLHttpRequest: |
| 262 return RequestContextType::XML_HTTP_REQUEST; |
| 263 case blink::WebURLRequest::RequestContextXSLT: |
| 264 return RequestContextType::XSLT; |
| 265 } |
| 266 |
| 267 NOTREACHED(); |
| 268 return RequestContextType::UNSPECIFIED; |
| 269 } |
| 270 |
| 271 bool EnumTraits<RequestContextType, blink::WebURLRequest::RequestContext>:: |
| 272 FromMojom(RequestContextType input, |
| 273 blink::WebURLRequest::RequestContext* out) { |
| 274 switch (input) { |
| 275 case RequestContextType::UNSPECIFIED: |
| 276 *out = blink::WebURLRequest::RequestContextUnspecified; |
| 277 return true; |
| 278 case RequestContextType::AUDIO: |
| 279 *out = blink::WebURLRequest::RequestContextAudio; |
| 280 return true; |
| 281 case RequestContextType::BEACON: |
| 282 *out = blink::WebURLRequest::RequestContextBeacon; |
| 283 return true; |
| 284 case RequestContextType::CSP_REPORT: |
| 285 *out = blink::WebURLRequest::RequestContextCSPReport; |
| 286 return true; |
| 287 case RequestContextType::DOWNLOAD: |
| 288 *out = blink::WebURLRequest::RequestContextDownload; |
| 289 return true; |
| 290 case RequestContextType::EMBED: |
| 291 *out = blink::WebURLRequest::RequestContextEmbed; |
| 292 return true; |
| 293 case RequestContextType::EVENT_SOURCE: |
| 294 *out = blink::WebURLRequest::RequestContextEventSource; |
| 295 return true; |
| 296 case RequestContextType::FAVICON: |
| 297 *out = blink::WebURLRequest::RequestContextFavicon; |
| 298 return true; |
| 299 case RequestContextType::FETCH: |
| 300 *out = blink::WebURLRequest::RequestContextFetch; |
| 301 return true; |
| 302 case RequestContextType::FONT: |
| 303 *out = blink::WebURLRequest::RequestContextFont; |
| 304 return true; |
| 305 case RequestContextType::FORM: |
| 306 *out = blink::WebURLRequest::RequestContextForm; |
| 307 return true; |
| 308 case RequestContextType::FRAME: |
| 309 *out = blink::WebURLRequest::RequestContextFrame; |
| 310 return true; |
| 311 case RequestContextType::HYPERLINK: |
| 312 *out = blink::WebURLRequest::RequestContextHyperlink; |
| 313 return true; |
| 314 case RequestContextType::IFRAME: |
| 315 *out = blink::WebURLRequest::RequestContextIframe; |
| 316 return true; |
| 317 case RequestContextType::IMAGE: |
| 318 *out = blink::WebURLRequest::RequestContextImage; |
| 319 return true; |
| 320 case RequestContextType::IMAGE_SET: |
| 321 *out = blink::WebURLRequest::RequestContextImageSet; |
| 322 return true; |
| 323 case RequestContextType::IMPORT: |
| 324 *out = blink::WebURLRequest::RequestContextImport; |
| 325 return true; |
| 326 case RequestContextType::INTERNAL: |
| 327 *out = blink::WebURLRequest::RequestContextInternal; |
| 328 return true; |
| 329 case RequestContextType::LOCATION: |
| 330 *out = blink::WebURLRequest::RequestContextLocation; |
| 331 return true; |
| 332 case RequestContextType::MANIFEST: |
| 333 *out = blink::WebURLRequest::RequestContextManifest; |
| 334 return true; |
| 335 case RequestContextType::OBJECT: |
| 336 *out = blink::WebURLRequest::RequestContextObject; |
| 337 return true; |
| 338 case RequestContextType::PING: |
| 339 *out = blink::WebURLRequest::RequestContextPing; |
| 340 return true; |
| 341 case RequestContextType::PLUGIN: |
| 342 *out = blink::WebURLRequest::RequestContextPlugin; |
| 343 return true; |
| 344 case RequestContextType::PREFETCH: |
| 345 *out = blink::WebURLRequest::RequestContextPrefetch; |
| 346 return true; |
| 347 case RequestContextType::SCRIPT: |
| 348 *out = blink::WebURLRequest::RequestContextScript; |
| 349 return true; |
| 350 case RequestContextType::SERVICE_WORKER: |
| 351 *out = blink::WebURLRequest::RequestContextServiceWorker; |
| 352 return true; |
| 353 case RequestContextType::SHARED_WORKER: |
| 354 *out = blink::WebURLRequest::RequestContextSharedWorker; |
| 355 return true; |
| 356 case RequestContextType::SUBRESOURCE: |
| 357 *out = blink::WebURLRequest::RequestContextSubresource; |
| 358 return true; |
| 359 case RequestContextType::STYLE: |
| 360 *out = blink::WebURLRequest::RequestContextStyle; |
| 361 return true; |
| 362 case RequestContextType::TRACK: |
| 363 *out = blink::WebURLRequest::RequestContextTrack; |
| 364 return true; |
| 365 case RequestContextType::VIDEO: |
| 366 *out = blink::WebURLRequest::RequestContextVideo; |
| 367 return true; |
| 368 case RequestContextType::WORKER: |
| 369 *out = blink::WebURLRequest::RequestContextWorker; |
| 370 return true; |
| 371 case RequestContextType::XML_HTTP_REQUEST: |
| 372 *out = blink::WebURLRequest::RequestContextXMLHttpRequest; |
| 373 return true; |
| 374 case RequestContextType::XSLT: |
| 375 *out = blink::WebURLRequest::RequestContextXSLT; |
| 376 return true; |
| 377 } |
| 378 |
| 379 return false; |
| 380 } |
| 381 |
| 382 // static |
| 383 void* StructTraits<blink::mojom::FetchAPIRequestDataView, |
| 384 blink::WebServiceWorkerRequest>:: |
| 385 SetUpContext(const blink::WebServiceWorkerRequest& request) { |
| 386 FetchAPIRequestStructTraitsContext* context = |
| 387 new FetchAPIRequestStructTraitsContext(); |
| 388 for (const auto& pair : request.headers()) |
| 389 context->headers.insert(pair.key, pair.value); |
| 390 |
| 391 return context; |
| 392 } |
| 393 |
| 394 // static |
| 395 void StructTraits<blink::mojom::FetchAPIRequestDataView, |
| 396 blink::WebServiceWorkerRequest>:: |
| 397 TearDownContext(const blink::WebServiceWorkerRequest& request, |
| 398 void* context) { |
| 399 delete static_cast<FetchAPIRequestStructTraitsContext*>(context); |
| 400 } |
| 401 |
| 402 // static |
| 403 blink::KURL StructTraits<blink::mojom::FetchAPIRequestDataView, |
| 404 blink::WebServiceWorkerRequest>:: |
| 405 url(const blink::WebServiceWorkerRequest& request) { |
| 406 return request.url(); |
| 407 } |
| 408 |
| 409 // static |
| 410 WTF::String StructTraits<blink::mojom::FetchAPIRequestDataView, |
| 411 blink::WebServiceWorkerRequest>:: |
| 412 method(const blink::WebServiceWorkerRequest& request) { |
| 413 return request.method(); |
| 414 } |
| 415 |
| 416 // static |
| 417 const WTF::HashMap<WTF::String, WTF::String>& |
| 418 StructTraits<blink::mojom::FetchAPIRequestDataView, |
| 419 blink::WebServiceWorkerRequest>:: |
| 420 headers(const blink::WebServiceWorkerRequest& request, void* context) { |
| 421 DCHECK(context); |
| 422 return static_cast<FetchAPIRequestStructTraitsContext*>(context)->headers; |
| 423 } |
| 424 |
| 425 // static |
| 426 const blink::Referrer& StructTraits<blink::mojom::FetchAPIRequestDataView, |
| 427 blink::WebServiceWorkerRequest>:: |
| 428 referrer(const blink::WebServiceWorkerRequest& request) { |
| 429 return request.referrer(); |
| 430 } |
| 431 |
| 432 // static |
| 433 WTF::String StructTraits<blink::mojom::FetchAPIRequestDataView, |
| 434 blink::WebServiceWorkerRequest>:: |
| 435 blob_uuid(const blink::WebServiceWorkerRequest& request) { |
| 436 if (request.blobDataHandle()) |
| 437 return request.blobDataHandle()->uuid(); |
| 438 |
| 439 return WTF::String(); |
| 440 } |
| 441 |
| 442 // static |
| 443 uint64_t StructTraits<blink::mojom::FetchAPIRequestDataView, |
| 444 blink::WebServiceWorkerRequest>:: |
| 445 blob_size(const blink::WebServiceWorkerRequest& request) { |
| 446 if (request.blobDataHandle()) |
| 447 return request.blobDataHandle()->size(); |
| 448 |
| 449 return 0; |
| 450 } |
| 451 |
| 452 // static |
| 453 WTF::String StructTraits<blink::mojom::FetchAPIRequestDataView, |
| 454 blink::WebServiceWorkerRequest>:: |
| 455 client_id(const blink::WebServiceWorkerRequest& request) { |
| 456 return request.clientId(); |
| 457 } |
| 458 |
| 459 // static |
| 460 bool StructTraits<blink::mojom::FetchAPIRequestDataView, |
| 461 blink::WebServiceWorkerRequest>:: |
| 462 Read(blink::mojom::FetchAPIRequestDataView data, |
| 463 blink::WebServiceWorkerRequest* out) { |
| 464 blink::WebURLRequest::FetchRequestMode mode; |
| 465 blink::WebURLRequest::RequestContext requestContext; |
| 466 blink::WebURLRequest::FrameType frameType; |
| 467 blink::KURL url; |
| 468 WTF::String method; |
| 469 WTF::HashMap<WTF::String, WTF::String> headers; |
| 470 WTF::String blobUuid; |
| 471 blink::Referrer referrer; |
| 472 blink::WebURLRequest::FetchCredentialsMode credentialsMode; |
| 473 blink::WebURLRequest::FetchRedirectMode redirectMode; |
| 474 WTF::String clientId; |
| 475 |
| 476 if (!data.ReadMode(&mode) || !data.ReadRequestContextType(&requestContext) || |
| 477 !data.ReadFrameType(&frameType) || !data.ReadUrl(&url) || |
| 478 !data.ReadMethod(&method) || !data.ReadHeaders(&headers) || |
| 479 !data.ReadBlobUuid(&blobUuid) || !data.ReadReferrer(&referrer) || |
| 480 !data.ReadCredentialsMode(&credentialsMode) || |
| 481 !data.ReadRedirectMode(&redirectMode) || !data.ReadClientId(&clientId)) { |
| 482 return false; |
| 483 } |
| 484 |
| 485 out->setMode(mode); |
| 486 out->setIsMainResourceLoad(data.is_main_resource_load()); |
| 487 out->setRequestContext(requestContext); |
| 488 out->setFrameType(frameType); |
| 489 out->setURL(url); |
| 490 out->setMethod(method); |
| 491 for (const auto& pair : headers) |
| 492 out->setHeader(pair.key, pair.value); |
| 493 out->setBlob(blobUuid, static_cast<long long>(data.blob_size())); |
| 494 out->setReferrer(referrer.referrer, static_cast<blink::WebReferrerPolicy>( |
| 495 referrer.referrerPolicy)); |
| 496 out->setCredentialsMode(credentialsMode); |
| 497 out->setRedirectMode(redirectMode); |
| 498 out->setClientId(clientId); |
| 499 out->setIsReload(data.is_reload()); |
| 500 return true; |
| 501 } |
| 502 |
| 503 } // namespace mojo |
OLD | NEW |