Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(19)

Side by Side Diff: chrome/renderer/render_view.cc

Issue 2775003: Added plumbing to transport the frame name between RenderViewHost and the Webkit layer. (Closed)
Patch Set: Added plumbing from chrome -> webkit api. Created 10 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/renderer/render_view.h" 5 #include "chrome/renderer/render_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 460
461 /*static*/ 461 /*static*/
462 RenderView* RenderView::Create( 462 RenderView* RenderView::Create(
463 RenderThreadBase* render_thread, 463 RenderThreadBase* render_thread,
464 gfx::NativeViewId parent_hwnd, 464 gfx::NativeViewId parent_hwnd,
465 int32 opener_id, 465 int32 opener_id,
466 const RendererPreferences& renderer_prefs, 466 const RendererPreferences& renderer_prefs,
467 const WebPreferences& webkit_prefs, 467 const WebPreferences& webkit_prefs,
468 SharedRenderViewCounter* counter, 468 SharedRenderViewCounter* counter,
469 int32 routing_id, 469 int32 routing_id,
470 int64 session_storage_namespace_id) { 470 int64 session_storage_namespace_id,
471 const string16& frame_name) {
471 DCHECK(routing_id != MSG_ROUTING_NONE); 472 DCHECK(routing_id != MSG_ROUTING_NONE);
472 scoped_refptr<RenderView> view = new RenderView(render_thread, webkit_prefs, 473 scoped_refptr<RenderView> view = new RenderView(render_thread, webkit_prefs,
473 session_storage_namespace_id); 474 session_storage_namespace_id);
474 view->Init(parent_hwnd, 475 view->Init(parent_hwnd,
475 opener_id, 476 opener_id,
476 renderer_prefs, 477 renderer_prefs,
477 counter, 478 counter,
478 routing_id); // adds reference 479 routing_id,
480 frame_name); // adds reference
479 return view; 481 return view;
480 } 482 }
481 483
482 /*static*/ 484 /*static*/
483 void RenderView::SetNextPageID(int32 next_page_id) { 485 void RenderView::SetNextPageID(int32 next_page_id) {
484 // This method should only be called during process startup, and the given 486 // This method should only be called during process startup, and the given
485 // page id had better not exceed our current next page id! 487 // page id had better not exceed our current next page id!
486 DCHECK_EQ(next_page_id_, 1); 488 DCHECK_EQ(next_page_id_, 1);
487 DCHECK(next_page_id >= next_page_id_); 489 DCHECK(next_page_id >= next_page_id_);
488 next_page_id_ = next_page_id; 490 next_page_id_ = next_page_id;
(...skipping 14 matching lines...) Expand all
503 505
504 void RenderView::UnregisterPluginDelegate(WebPluginDelegateProxy* delegate) { 506 void RenderView::UnregisterPluginDelegate(WebPluginDelegateProxy* delegate) {
505 plugin_delegates_.erase(delegate); 507 plugin_delegates_.erase(delegate);
506 } 508 }
507 #endif 509 #endif
508 510
509 void RenderView::Init(gfx::NativeViewId parent_hwnd, 511 void RenderView::Init(gfx::NativeViewId parent_hwnd,
510 int32 opener_id, 512 int32 opener_id,
511 const RendererPreferences& renderer_prefs, 513 const RendererPreferences& renderer_prefs,
512 SharedRenderViewCounter* counter, 514 SharedRenderViewCounter* counter,
513 int32 routing_id) { 515 int32 routing_id,
516 const string16& frame_name) {
514 DCHECK(!webview()); 517 DCHECK(!webview());
515 518
516 if (opener_id != MSG_ROUTING_NONE) 519 if (opener_id != MSG_ROUTING_NONE)
517 opener_id_ = opener_id; 520 opener_id_ = opener_id;
518 521
519 if (counter) { 522 if (counter) {
520 shared_popup_counter_ = counter; 523 shared_popup_counter_ = counter;
521 shared_popup_counter_->data++; 524 shared_popup_counter_->data++;
522 decrement_shared_popup_at_destruction_ = true; 525 decrement_shared_popup_at_destruction_ = true;
523 } else { 526 } else {
524 shared_popup_counter_ = new SharedRenderViewCounter(0); 527 shared_popup_counter_ = new SharedRenderViewCounter(0);
525 decrement_shared_popup_at_destruction_ = false; 528 decrement_shared_popup_at_destruction_ = false;
526 } 529 }
527 530
528 devtools_agent_.reset(new DevToolsAgent(routing_id, this)); 531 devtools_agent_.reset(new DevToolsAgent(routing_id, this));
529 532
530 webwidget_ = WebView::create(this); 533 webwidget_ = WebView::create(this);
531 Singleton<ViewMap>::get()->insert(std::make_pair(webview(), this)); 534 Singleton<ViewMap>::get()->insert(std::make_pair(webview(), this));
532 webkit_preferences_.Apply(webview()); 535 webkit_preferences_.Apply(webview());
533 webview()->initializeMainFrame(this); 536 webview()->initializeMainFrame(this);
537 // TODO(atwilson): Enable this when setName() becomes available upstream.
538 // if (!frame_name.empty)
539 // webview()->mainFrame()->setName(frame_name);
534 webview()->setDevToolsAgent( 540 webview()->setDevToolsAgent(
535 WebDevToolsAgent::create(webview(), devtools_agent_.get())); 541 WebDevToolsAgent::create(webview(), devtools_agent_.get()));
536 542
537 OnSetRendererPrefs(renderer_prefs); 543 OnSetRendererPrefs(renderer_prefs);
538 544
539 routing_id_ = routing_id; 545 routing_id_ = routing_id;
540 render_thread_->AddRoute(routing_id_, this); 546 render_thread_->AddRoute(routing_id_, this);
541 // Take a reference on behalf of the RenderThread. This will be balanced 547 // Take a reference on behalf of the RenderThread. This will be balanced
542 // when we receive ViewMsg_Close. 548 // when we receive ViewMsg_Close.
543 AddRef(); 549 AddRef();
(...skipping 1010 matching lines...) Expand 10 before | Expand all | Expand 10 after
1554 #else 1560 #else
1555 // TODO(port): Implement the infobar that accompanies the default plugin. 1561 // TODO(port): Implement the infobar that accompanies the default plugin.
1556 // Linux: http://crbug.com/10952 1562 // Linux: http://crbug.com/10952
1557 // Mac: http://crbug.com/17392 1563 // Mac: http://crbug.com/17392
1558 NOTIMPLEMENTED(); 1564 NOTIMPLEMENTED();
1559 #endif 1565 #endif
1560 } 1566 }
1561 1567
1562 // WebKit::WebViewClient ------------------------------------------------------ 1568 // WebKit::WebViewClient ------------------------------------------------------
1563 1569
1570 // TODO(atwilson): Remove this older API when we've pushed the related changes
1571 // upstream.
1564 WebView* RenderView::createView( 1572 WebView* RenderView::createView(
1565 WebFrame* creator, 1573 WebFrame* creator,
1566 const WebWindowFeatures& features) { 1574 const WebWindowFeatures& features) {
1575 return createView(creator, features, WebString());
1576 }
1577
1578 WebView* RenderView::createView(
1579 WebFrame* creator,
1580 const WebWindowFeatures& features,
1581 const WebString& frame_name) {
1567 // Check to make sure we aren't overloading on popups. 1582 // Check to make sure we aren't overloading on popups.
1568 if (shared_popup_counter_->data > kMaximumNumberOfUnacknowledgedPopups) 1583 if (shared_popup_counter_->data > kMaximumNumberOfUnacknowledgedPopups)
1569 return NULL; 1584 return NULL;
1570 1585
1571 // This window can't be closed from a window.close() call until we receive a 1586 // This window can't be closed from a window.close() call until we receive a
1572 // message from the Browser process explicitly allowing it. 1587 // message from the Browser process explicitly allowing it.
1573 script_can_close_ = false; 1588 script_can_close_ = false;
1574 1589
1590 ViewHostMsg_CreateWindow_Params params;
1591 params.opener_id = routing_id_;
1592 params.user_gesture = creator->isProcessingUserGesture();
1593 params.window_container_type = WindowFeaturesToContainerType(features);
1594 params.session_storage_namespace_id = session_storage_namespace_id_;
1595 params.frame_name = frame_name;
1596
1575 int32 routing_id = MSG_ROUTING_NONE; 1597 int32 routing_id = MSG_ROUTING_NONE;
1576 bool user_gesture = creator->isProcessingUserGesture(); 1598 int64 cloned_session_storage_namespace_id;
1577 bool opener_suppressed = creator->willSuppressOpenerInNewFrame(); 1599 bool opener_suppressed = creator->willSuppressOpenerInNewFrame();
1578 int64 cloned_session_storage_namespace_id;
1579 1600
1580 render_thread_->Send( 1601 render_thread_->Send(
1581 new ViewHostMsg_CreateWindow( 1602 new ViewHostMsg_CreateWindow(
1582 routing_id_, 1603 params, &routing_id, &cloned_session_storage_namespace_id));
rafaelw 2010/06/10 22:48:05 start params on previous line. indent to align on
1583 user_gesture,
1584 WindowFeaturesToContainerType(features),
1585 session_storage_namespace_id_,
1586 &routing_id,
1587 &cloned_session_storage_namespace_id));
1588 if (routing_id == MSG_ROUTING_NONE) 1604 if (routing_id == MSG_ROUTING_NONE)
1589 return NULL; 1605 return NULL;
1590 1606
1591 RenderView* view = RenderView::Create(render_thread_, 1607 RenderView* view = RenderView::Create(render_thread_,
1592 0, 1608 0,
1593 routing_id_, 1609 routing_id_,
1594 renderer_preferences_, 1610 renderer_preferences_,
1595 webkit_preferences_, 1611 webkit_preferences_,
1596 shared_popup_counter_, 1612 shared_popup_counter_,
1597 routing_id, 1613 routing_id,
1598 cloned_session_storage_namespace_id); 1614 cloned_session_storage_namespace_id,
1599 view->opened_by_user_gesture_ = user_gesture; 1615 frame_name);
1616 view->opened_by_user_gesture_ = params.user_gesture;
1600 1617
1601 // Record whether the creator frame is trying to suppress the opener field. 1618 // Record whether the creator frame is trying to suppress the opener field.
1602 view->opener_suppressed_ = opener_suppressed; 1619 view->opener_suppressed_ = opener_suppressed;
1603 1620
1604 // Record the security origin of the creator. 1621 // Record the security origin of the creator.
1605 GURL creator_url(creator->securityOrigin().toString().utf8()); 1622 GURL creator_url(creator->securityOrigin().toString().utf8());
1606 if (!creator_url.is_valid() || !creator_url.IsStandard()) 1623 if (!creator_url.is_valid() || !creator_url.IsStandard())
1607 creator_url = GURL(); 1624 creator_url = GURL();
1608 view->creator_url_ = creator_url; 1625 view->creator_url_ = creator_url;
1609 1626
(...skipping 3500 matching lines...) Expand 10 before | Expand all | Expand 10 after
5110 webkit_glue::FormData form; 5127 webkit_glue::FormData form;
5111 const WebInputElement element = node.toConst<WebInputElement>(); 5128 const WebInputElement element = node.toConst<WebInputElement>();
5112 if (!form_manager_.FindFormWithFormControlElement( 5129 if (!form_manager_.FindFormWithFormControlElement(
5113 element, FormManager::REQUIRE_NONE, &form)) 5130 element, FormManager::REQUIRE_NONE, &form))
5114 return; 5131 return;
5115 5132
5116 autofill_action_ = action; 5133 autofill_action_ = action;
5117 Send(new ViewHostMsg_FillAutoFillFormData( 5134 Send(new ViewHostMsg_FillAutoFillFormData(
5118 routing_id_, autofill_query_id_, form, value, label)); 5135 routing_id_, autofill_query_id_, form, value, label));
5119 } 5136 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698