1 // Copyright (c) 2011 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 "chrome/common/common_param_traits.h" 6 #include "content/common/common_param_traits.h" 7 8 #define IPC_MESSAGE_IMPL 9 #include "chrome/common/automation_messages.h" 10 11 AutomationURLRequest::AutomationURLRequest() 12 : resource_type(0), 13 load_flags(0) { 14 } 15 16 AutomationURLRequest::AutomationURLRequest( 17 const std::string& in_url, 18 const std::string& in_method, 19 const std::string& in_referrer, 20 const std::string& in_extra_request_headers, 21 scoped_refptr<net::UploadData> in_upload_data, 22 int in_resource_type, 23 int in_load_flags) 24 : url(in_url), 25 method(in_method), 26 referrer(in_referrer), 27 extra_request_headers(in_extra_request_headers), 28 upload_data(in_upload_data), 29 resource_type(in_resource_type), 30 load_flags(in_load_flags) { 31 } 32 33 AutomationURLRequest::~AutomationURLRequest() {} 34 35 AutomationURLResponse::AutomationURLResponse() 36 : content_length(0), 37 redirect_status(0) { 38 } 39 40 AutomationURLResponse::AutomationURLResponse( 41 const std::string& in_mime_type, const std::string& in_headers, 42 int64 in_content_length, const base::Time& in_last_modified, 43 const std::string& in_redirect_url, int in_redirect_status, 44 const net::HostPortPair& host_socket_address) 45 : mime_type(in_mime_type), 46 headers(in_headers), 47 content_length(in_content_length), 48 last_modified(in_last_modified), 49 redirect_url(in_redirect_url), 50 redirect_status(in_redirect_status), 51 socket_address(host_socket_address) { 52 } 53 54 55 AutomationURLResponse::~AutomationURLResponse() {} 56 57 ExternalTabSettings::ExternalTabSettings() 58 : parent(NULL), 59 dimensions(), 60 style(0), 61 is_incognito(false), 62 load_requests_via_automation(false), 63 handle_top_level_requests(false), 64 initial_url(), 65 referrer(), 66 infobars_enabled(false), 67 route_all_top_level_navigations(false) { 68 } 69 70 ExternalTabSettings::ExternalTabSettings( 71 gfx::NativeWindow in_parent, 72 const gfx::Rect& in_dimensions, 73 unsigned int in_style, 74 bool in_is_incognito, 75 bool in_load_requests_via_automation, 76 bool in_handle_top_level_requests, 77 const GURL& in_initial_url, 78 const GURL& in_referrer, 79 bool in_infobars_enabled, 80 bool in_route_all_top_level_navigations) 81 : parent(in_parent), 82 dimensions(in_dimensions), 83 style(in_style), 84 is_incognito(in_is_incognito), 85 load_requests_via_automation(in_load_requests_via_automation), 86 handle_top_level_requests(in_handle_top_level_requests), 87 initial_url(in_initial_url), 88 referrer(in_referrer), 89 infobars_enabled(in_infobars_enabled), 90 route_all_top_level_navigations(in_route_all_top_level_navigations) { 91 } 92 93 ExternalTabSettings::~ExternalTabSettings() {} 94 95 NavigationInfo::NavigationInfo() 96 : navigation_type(0), 97 relative_offset(0), 98 navigation_index(0), 99 security_style(SECURITY_STYLE_UNKNOWN), 100 displayed_insecure_content(0), 101 ran_insecure_content(0) { 102 } 103 104 NavigationInfo::NavigationInfo(int in_navigation_type, 105 int in_relative_offset, 106 int in_navigation_index, 107 const std::wstring& in_title, 108 const GURL& in_url, 109 const GURL& in_referrer, 110 SecurityStyle in_security_style, 111 bool in_displayed_insecure_content, 112 bool in_ran_insecure_content) 113 : navigation_type(in_navigation_type), 114 relative_offset(in_relative_offset), 115 navigation_index(in_navigation_index), 116 title(in_title), 117 url(in_url), 118 referrer(in_referrer), 119 security_style(in_security_style), 120 displayed_insecure_content(in_displayed_insecure_content), 121 ran_insecure_content(in_ran_insecure_content) { 122 } 123 124 NavigationInfo::~NavigationInfo() {} 125 126 MiniContextMenuParams::MiniContextMenuParams() 127 : screen_x(0), 128 screen_y(0) { 129 } 130 131 MiniContextMenuParams::MiniContextMenuParams(int in_screen_x, 132 int in_screen_y, 133 const GURL& in_link_url, 134 const GURL& in_unfiltered_link_url, 135 const GURL& in_src_url, 136 const GURL& in_page_url, 137 const GURL& in_frame_url) 138 : screen_x(in_screen_x), 139 screen_y(in_screen_y), 140 link_url(in_link_url), 141 unfiltered_link_url(in_unfiltered_link_url), 142 src_url(in_src_url), 143 page_url(in_page_url), 144 frame_url(in_frame_url) { 145 } 146 147 MiniContextMenuParams::~MiniContextMenuParams() {} 148 149 AttachExternalTabParams::AttachExternalTabParams() 150 : cookie(0), 151 disposition(0), 152 user_gesture(false) { 153 } 154 155 AttachExternalTabParams::AttachExternalTabParams( 156 uint64 in_cookie, 157 const GURL& in_url, 158 const gfx::Rect& in_dimensions, 159 int in_disposition, 160 bool in_user_gesture, 161 const std::string& in_profile_name) 162 : cookie(in_cookie), 163 url(in_url), 164 dimensions(in_dimensions), 165 disposition(in_disposition), 166 user_gesture(in_user_gesture), 167 profile_name(in_profile_name) { 168 } 169 170 AttachExternalTabParams::~AttachExternalTabParams() {} 171 172 namespace IPC { 173 174 // static 175 void ParamTraits<AutomationMsg_Find_Params>::Write(Message* m, 176 const param_type& p) { 177 WriteParam(m, p.unused); 178 WriteParam(m, p.search_string); 179 WriteParam(m, p.forward); 180 WriteParam(m, p.match_case); 181 WriteParam(m, p.find_next); 182 } 183 184 // static 185 bool ParamTraits<AutomationMsg_Find_Params>::Read(const Message* m, 186 void** iter, 187 param_type* p) { 188 return 189 ReadParam(m, iter, &p->unused) && 190 ReadParam(m, iter, &p->search_string) && 191 ReadParam(m, iter, &p->forward) && 192 ReadParam(m, iter, &p->match_case) && 193 ReadParam(m, iter, &p->find_next); 194 } 195 196 // static 197 void ParamTraits<AutomationMsg_Find_Params>::Log(const param_type& p, 198 std::string* l) { 199 l->append("<AutomationMsg_Find_Params>"); 200 } 201 202 // static 203 void ParamTraits<AutomationMsg_NavigationResponseValues>::Write( 204 Message* m, 205 const param_type& p) { 206 m->WriteInt(p); 207 } 208 209 // static 210 bool ParamTraits<AutomationMsg_NavigationResponseValues>::Read(const Message* m, 211 void** iter, 212 param_type* p) { 213 int type; 214 if (!m->ReadInt(iter, &type)) 215 return false; 216 *p = static_cast<AutomationMsg_NavigationResponseValues>(type); 217 return true; 218 } 219 220 // static 221 void ParamTraits<AutomationMsg_NavigationResponseValues>::Log( 222 const param_type& p, std::string* l) { 223 std::string control; 224 switch (p) { 225 case AUTOMATION_MSG_NAVIGATION_ERROR: 226 control = "AUTOMATION_MSG_NAVIGATION_ERROR"; 227 break; 228 case AUTOMATION_MSG_NAVIGATION_SUCCESS: 229 control = "AUTOMATION_MSG_NAVIGATION_SUCCESS"; 230 break; 231 case AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED: 232 control = "AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED"; 233 break; 234 default: 235 control = "UNKNOWN"; 236 break; 237 } 238 239 LogParam(control, l); 240 } 241 242 // static 243 void ParamTraits<AutomationMsg_ExtensionResponseValues>::Write( 244 Message* m, 245 const param_type& p) { 246 m->WriteInt(p); 247 } 248 249 // static 250 bool ParamTraits<AutomationMsg_ExtensionResponseValues>::Read( 251 const Message* m, 252 void** iter, 253 param_type* p) { 254 int type; 255 if (!m->ReadInt(iter, &type)) 256 return false; 257 *p = static_cast<AutomationMsg_ExtensionResponseValues>(type); 258 return true; 259 } 260 261 // static 262 void ParamTraits<AutomationMsg_ExtensionResponseValues>::Log( 263 const param_type& p, 264 std::string* l) { 265 std::string control; 266 switch (p) { 267 case AUTOMATION_MSG_EXTENSION_INSTALL_SUCCEEDED: 268 control = "AUTOMATION_MSG_EXTENSION_INSTALL_SUCCEEDED"; 269 break; 270 case AUTOMATION_MSG_EXTENSION_INSTALL_FAILED: 271 control = "AUTOMATION_MSG_EXTENSION_INSTALL_FAILED"; 272 break; 273 default: 274 control = "UNKNOWN"; 275 break; 276 } 277 278 LogParam(control, l); 279 } 280 281 // static 282 void ParamTraits<AutomationMsg_ExtensionProperty>::Write(Message* m, 283 const param_type& p) { 284 m->WriteInt(p); 285 } 286 287 // static 288 bool ParamTraits<AutomationMsg_ExtensionProperty>::Read(const Message* m, 289 void** iter, 290 param_type* p) { 291 int type; 292 if (!m->ReadInt(iter, &type)) 293 return false; 294 *p = static_cast<AutomationMsg_ExtensionProperty>(type); 295 return true; 296 } 297 298 // static 299 void ParamTraits<AutomationMsg_ExtensionProperty>::Log(const param_type& p, 300 std::string* l) { 301 std::string control; 302 switch (p) { 303 case AUTOMATION_MSG_EXTENSION_ID: 304 control = "AUTOMATION_MSG_EXTENSION_ID"; 305 break; 306 case AUTOMATION_MSG_EXTENSION_NAME: 307 control = "AUTOMATION_MSG_EXTENSION_NAME"; 308 break; 309 case AUTOMATION_MSG_EXTENSION_VERSION: 310 control = "AUTOMATION_MSG_EXTENSION_VERSION"; 311 break; 312 case AUTOMATION_MSG_EXTENSION_BROWSER_ACTION_INDEX: 313 control = "AUTOMATION_MSG_EXTENSION_BROWSER_ACTION_INDEX"; 314 break; 315 default: 316 control = "UNKNOWN"; 317 break; 318 } 319 320 LogParam(control, l); 321 } 322 323 // static 324 void ParamTraits<SecurityStyle>::Write(Message* m, const param_type& p) { 325 m->WriteInt(p); 326 } 327 328 // static 329 bool ParamTraits<SecurityStyle>::Read(const Message* m, 330 void** iter, 331 param_type* p) { 332 int type; 333 if (!m->ReadInt(iter, &type)) 334 return false; 335 *p = static_cast<SecurityStyle>(type); 336 return true; 337 } 338 339 // static 340 void ParamTraits<SecurityStyle>::Log(const param_type& p, std::string* l) { 341 std::string control; 342 switch (p) { 343 case SECURITY_STYLE_UNKNOWN: 344 control = "SECURITY_STYLE_UNKNOWN"; 345 break; 346 case SECURITY_STYLE_UNAUTHENTICATED: 347 control = "SECURITY_STYLE_UNAUTHENTICATED"; 348 break; 349 case SECURITY_STYLE_AUTHENTICATION_BROKEN: 350 control = "SECURITY_STYLE_AUTHENTICATION_BROKEN"; 351 break; 352 case SECURITY_STYLE_AUTHENTICATED: 353 control = "SECURITY_STYLE_AUTHENTICATED"; 354 break; 355 default: 356 control = "UNKNOWN"; 357 break; 358 } 359 360 LogParam(control, l); 361 } 362 363 // static 364 void ParamTraits<PageType>::Write(Message* m, const param_type& p) { 365 m->WriteInt(p); 366 } 367 368 // static 369 bool ParamTraits<PageType>::Read(const Message* m, void** iter, param_type* p) { 370 int type; 371 if (!m->ReadInt(iter, &type)) 372 return false; 373 *p = static_cast<PageType>(type); 374 return true; 375 } 376 377 // static 378 void ParamTraits<PageType>::Log(const param_type& p, std::string* l) { 379 std::string control; 380 switch (p) { 381 case NORMAL_PAGE: 382 control = "NORMAL_PAGE"; 383 break; 384 case ERROR_PAGE: 385 control = "ERROR_PAGE"; 386 break; 387 case INTERSTITIAL_PAGE: 388 control = "INTERSTITIAL_PAGE"; 389 break; 390 default: 391 control = "UNKNOWN"; 392 break; 393 } 394 395 LogParam(control, l); 396 } 397 398 // static 399 void ParamTraits<AutomationURLRequest>::Write(Message* m, const param_type& p) { 400 WriteParam(m, p.url); 401 WriteParam(m, p.method); 402 WriteParam(m, p.referrer); 403 WriteParam(m, p.extra_request_headers); 404 WriteParam(m, p.upload_data); 405 WriteParam(m, p.resource_type); 406 WriteParam(m, p.load_flags); 407 } 408 409 // static 410 bool ParamTraits<AutomationURLRequest>::Read(const Message* m, 411 void** iter, 412 param_type* p) { 413 return ReadParam(m, iter, &p->url) && 414 ReadParam(m, iter, &p->method) && 415 ReadParam(m, iter, &p->referrer) && 416 ReadParam(m, iter, &p->extra_request_headers) && 417 ReadParam(m, iter, &p->upload_data) && 418 ReadParam(m, iter, &p->resource_type) && 419 ReadParam(m, iter, &p->load_flags); 420 } 421 422 // static 423 void ParamTraits<AutomationURLRequest>::Log(const param_type& p, 424 std::string* l) { 425 l->append("("); 426 LogParam(p.url, l); 427 l->append(", "); 428 LogParam(p.method, l); 429 l->append(", "); 430 LogParam(p.referrer, l); 431 l->append(", "); 432 LogParam(p.extra_request_headers, l); 433 l->append(", "); 434 LogParam(p.upload_data, l); 435 l->append(", "); 436 LogParam(p.resource_type, l); 437 l->append(", "); 438 LogParam(p.load_flags, l); 439 l->append(")"); 440 } 441 442 // static 443 void ParamTraits<AutomationURLResponse>::Write(Message* m, 444 const param_type& p) { 445 WriteParam(m, p.mime_type); 446 WriteParam(m, p.headers); 447 WriteParam(m, p.content_length); 448 WriteParam(m, p.last_modified); 449 WriteParam(m, p.redirect_url); 450 WriteParam(m, p.redirect_status); 451 WriteParam(m, p.socket_address); 452 } 453 454 // static 455 bool ParamTraits<AutomationURLResponse>::Read(const Message* m, 456 void** iter, 457 param_type* p) { 458 return ReadParam(m, iter, &p->mime_type) && 459 ReadParam(m, iter, &p->headers) && 460 ReadParam(m, iter, &p->content_length) && 461 ReadParam(m, iter, &p->last_modified) && 462 ReadParam(m, iter, &p->redirect_url) && 463 ReadParam(m, iter, &p->redirect_status) && 464 ReadParam(m, iter, &p->socket_address); 465 } 466 467 // static 468 void ParamTraits<AutomationURLResponse>::Log(const param_type& p, 469 std::string* l) { 470 l->append("("); 471 LogParam(p.mime_type, l); 472 l->append(", "); 473 LogParam(p.headers, l); 474 l->append(", "); 475 LogParam(p.content_length, l); 476 l->append(", "); 477 LogParam(p.last_modified, l); 478 l->append(", "); 479 LogParam(p.redirect_url, l); 480 l->append(", "); 481 LogParam(p.redirect_status, l); 482 l->append(", "); 483 LogParam(p.socket_address, l); 484 l->append(")"); 485 } 486 487 // static 488 void ParamTraits<ExternalTabSettings>::Write(Message* m, 489 const param_type& p) { 490 WriteParam(m, p.parent); 491 WriteParam(m, p.dimensions); 492 WriteParam(m, p.style); 493 WriteParam(m, p.is_incognito); 494 WriteParam(m, p.load_requests_via_automation); 495 WriteParam(m, p.handle_top_level_requests); 496 WriteParam(m, p.initial_url); 497 WriteParam(m, p.referrer); 498 WriteParam(m, p.infobars_enabled); 499 WriteParam(m, p.route_all_top_level_navigations); 500 } 501 502 // static 503 bool ParamTraits<ExternalTabSettings>::Read(const Message* m, 504 void** iter, 505 param_type* p) { 506 return ReadParam(m, iter, &p->parent) && 507 ReadParam(m, iter, &p->dimensions) && 508 ReadParam(m, iter, &p->style) && 509 ReadParam(m, iter, &p->is_incognito) && 510 ReadParam(m, iter, &p->load_requests_via_automation) && 511 ReadParam(m, iter, &p->handle_top_level_requests) && 512 ReadParam(m, iter, &p->initial_url) && 513 ReadParam(m, iter, &p->referrer) && 514 ReadParam(m, iter, &p->infobars_enabled) && 515 ReadParam(m, iter, &p->route_all_top_level_navigations); 516 } 517 518 // static 519 void ParamTraits<ExternalTabSettings>::Log(const param_type& p, 520 std::string* l) { 521 l->append("("); 522 LogParam(p.parent, l); 523 l->append(", "); 524 LogParam(p.dimensions, l); 525 l->append(", "); 526 LogParam(p.style, l); 527 l->append(", "); 528 LogParam(p.is_incognito, l); 529 l->append(", "); 530 LogParam(p.load_requests_via_automation, l); 531 l->append(", "); 532 LogParam(p.handle_top_level_requests, l); 533 l->append(", "); 534 LogParam(p.initial_url, l); 535 l->append(", "); 536 LogParam(p.referrer, l); 537 l->append(", "); 538 LogParam(p.infobars_enabled, l); 539 l->append(", "); 540 LogParam(p.route_all_top_level_navigations, l); 541 l->append(")"); 542 } 543 544 // static 545 void ParamTraits<NavigationInfo>::Write(Message* m, const param_type& p) { 546 WriteParam(m, p.navigation_type); 547 WriteParam(m, p.relative_offset); 548 WriteParam(m, p.navigation_index); 549 WriteParam(m, p.title); 550 WriteParam(m, p.url); 551 WriteParam(m, p.referrer); 552 WriteParam(m, p.security_style); 553 WriteParam(m, p.displayed_insecure_content); 554 WriteParam(m, p.ran_insecure_content); 555 } 556 557 // static 558 bool ParamTraits<NavigationInfo>::Read(const Message* m, 559 void** iter, 560 param_type* p) { 561 return ReadParam(m, iter, &p->navigation_type) && 562 ReadParam(m, iter, &p->relative_offset) && 563 ReadParam(m, iter, &p->navigation_index) && 564 ReadParam(m, iter, &p->title) && 565 ReadParam(m, iter, &p->url) && 566 ReadParam(m, iter, &p->referrer) && 567 ReadParam(m, iter, &p->security_style) && 568 ReadParam(m, iter, &p->displayed_insecure_content) && 569 ReadParam(m, iter, &p->ran_insecure_content); 570 } 571 572 // static 573 void ParamTraits<NavigationInfo>::Log(const param_type& p, std::string* l) { 574 l->append("("); 575 LogParam(p.navigation_type, l); 576 l->append(", "); 577 LogParam(p.relative_offset, l); 578 l->append(", "); 579 LogParam(p.navigation_index, l); 580 l->append(", "); 581 LogParam(p.title, l); 582 l->append(", "); 583 LogParam(p.url, l); 584 l->append(", "); 585 LogParam(p.referrer, l); 586 l->append(", "); 587 LogParam(p.security_style, l); 588 l->append(", "); 589 LogParam(p.displayed_insecure_content, l); 590 l->append(", "); 591 LogParam(p.ran_insecure_content, l); 592 l->append(")"); 593 } 594 595 // static 596 void ParamTraits<MiniContextMenuParams>::Write(Message* m, 597 const param_type& p) { 598 WriteParam(m, p.screen_x); 599 WriteParam(m, p.screen_y); 600 WriteParam(m, p.link_url); 601 WriteParam(m, p.unfiltered_link_url); 602 WriteParam(m, p.src_url); 603 WriteParam(m, p.page_url); 604 WriteParam(m, p.frame_url); 605 } 606 607 // static 608 bool ParamTraits<MiniContextMenuParams>::Read(const Message* m, 609 void** iter, 610 param_type* p) { 611 return ReadParam(m, iter, &p->screen_x) && 612 ReadParam(m, iter, &p->screen_y) && 613 ReadParam(m, iter, &p->link_url) && 614 ReadParam(m, iter, &p->unfiltered_link_url) && 615 ReadParam(m, iter, &p->src_url) && 616 ReadParam(m, iter, &p->page_url) && 617 ReadParam(m, iter, &p->frame_url); 618 } 619 620 // static 621 void ParamTraits<MiniContextMenuParams>::Log(const param_type& p, 622 std::string* l) { 623 l->append("("); 624 LogParam(p.screen_x, l); 625 l->append(", "); 626 LogParam(p.screen_y, l); 627 l->append(", "); 628 LogParam(p.link_url, l); 629 l->append(", "); 630 LogParam(p.unfiltered_link_url, l); 631 l->append(", "); 632 LogParam(p.src_url, l); 633 l->append(", "); 634 LogParam(p.page_url, l); 635 l->append(", "); 636 LogParam(p.frame_url, l); 637 l->append(")"); 638 } 639 640 // static 641 void ParamTraits<AttachExternalTabParams>::Write(Message* m, 642 const param_type& p) { 643 WriteParam(m, p.cookie); 644 WriteParam(m, p.url); 645 WriteParam(m, p.dimensions); 646 WriteParam(m, p.disposition); 647 WriteParam(m, p.user_gesture); 648 WriteParam(m, p.profile_name); 649 } 650 651 // static 652 bool ParamTraits<AttachExternalTabParams>::Read(const Message* m, 653 void** iter, 654 param_type* p) { 655 return ReadParam(m, iter, &p->cookie) && 656 ReadParam(m, iter, &p->url) && 657 ReadParam(m, iter, &p->dimensions) && 658 ReadParam(m, iter, &p->disposition) && 659 ReadParam(m, iter, &p->user_gesture) && 660 ReadParam(m, iter, &p->profile_name); 661 } 662 663 // static 664 void ParamTraits<AttachExternalTabParams>::Log(const param_type& p, 665 std::string* l) { 666 l->append("("); 667 LogParam(p.cookie, l); 668 l->append(", "); 669 LogParam(p.url, l); 670 l->append(", "); 671 LogParam(p.dimensions, l); 672 l->append(", "); 673 LogParam(p.disposition, l); 674 l->append(", "); 675 LogParam(p.user_gesture, l); 676 l->append(","); 677 LogParam(p.profile_name, l); 678 l->append(")"); 679 } 680 681 } // namespace IPC 682