| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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/browser/external_tab_container.h" | 5 #include "chrome/browser/external_tab_container.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "app/win_util.h" | 9 #include "app/win_util.h" |
| 10 #include "base/i18n/rtl.h" | 10 #include "base/i18n/rtl.h" |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 tab_contents_(NULL), | 47 tab_contents_(NULL), |
| 48 tab_contents_container_(NULL), | 48 tab_contents_container_(NULL), |
| 49 tab_handle_(0), | 49 tab_handle_(0), |
| 50 ignore_next_load_notification_(false), | 50 ignore_next_load_notification_(false), |
| 51 automation_resource_message_filter_(filter), | 51 automation_resource_message_filter_(filter), |
| 52 load_requests_via_automation_(false), | 52 load_requests_via_automation_(false), |
| 53 handle_top_level_requests_(false), | 53 handle_top_level_requests_(false), |
| 54 external_method_factory_(this), | 54 external_method_factory_(this), |
| 55 enabled_extension_automation_(false), | 55 enabled_extension_automation_(false), |
| 56 waiting_for_unload_event_(false), | 56 waiting_for_unload_event_(false), |
| 57 pending_(false), | 57 pending_(false) { |
| 58 infobars_enabled_(true) { | |
| 59 } | 58 } |
| 60 | 59 |
| 61 ExternalTabContainer::~ExternalTabContainer() { | 60 ExternalTabContainer::~ExternalTabContainer() { |
| 62 Uninitialize(); | 61 Uninitialize(); |
| 63 } | 62 } |
| 64 | 63 |
| 65 bool ExternalTabContainer::Init(Profile* profile, | 64 bool ExternalTabContainer::Init(Profile* profile, |
| 66 HWND parent, | 65 HWND parent, |
| 67 const gfx::Rect& bounds, | 66 const gfx::Rect& bounds, |
| 68 DWORD style, | 67 DWORD style, |
| 69 bool load_requests_via_automation, | 68 bool load_requests_via_automation, |
| 70 bool handle_top_level_requests, | 69 bool handle_top_level_requests, |
| 71 TabContents* existing_contents, | 70 TabContents* existing_contents, |
| 72 const GURL& initial_url, | 71 const GURL& initial_url, |
| 73 const GURL& referrer, | 72 const GURL& referrer) { |
| 74 bool infobars_enabled) { | |
| 75 if (IsWindow()) { | 73 if (IsWindow()) { |
| 76 NOTREACHED(); | 74 NOTREACHED(); |
| 77 return false; | 75 return false; |
| 78 } | 76 } |
| 79 | 77 |
| 80 load_requests_via_automation_ = load_requests_via_automation; | 78 load_requests_via_automation_ = load_requests_via_automation; |
| 81 handle_top_level_requests_ = handle_top_level_requests; | 79 handle_top_level_requests_ = handle_top_level_requests; |
| 82 infobars_enabled_ = infobars_enabled; | |
| 83 | 80 |
| 84 set_window_style(WS_POPUP | WS_CLIPCHILDREN); | 81 set_window_style(WS_POPUP | WS_CLIPCHILDREN); |
| 85 views::WidgetWin::Init(NULL, bounds); | 82 views::WidgetWin::Init(NULL, bounds); |
| 86 if (!IsWindow()) { | 83 if (!IsWindow()) { |
| 87 NOTREACHED(); | 84 NOTREACHED(); |
| 88 return false; | 85 return false; |
| 89 } | 86 } |
| 90 | 87 |
| 91 // TODO(jcampan): limit focus traversal to contents. | 88 // TODO(jcampan): limit focus traversal to contents. |
| 92 | 89 |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 347 // an unwrapped Profile. | 344 // an unwrapped Profile. |
| 348 bool result = new_container->Init( | 345 bool result = new_container->Init( |
| 349 new_contents->profile()->GetOriginalProfile(), | 346 new_contents->profile()->GetOriginalProfile(), |
| 350 NULL, | 347 NULL, |
| 351 initial_pos, | 348 initial_pos, |
| 352 WS_CHILD, | 349 WS_CHILD, |
| 353 load_requests_via_automation_, | 350 load_requests_via_automation_, |
| 354 handle_top_level_requests_, | 351 handle_top_level_requests_, |
| 355 new_contents, | 352 new_contents, |
| 356 GURL(), | 353 GURL(), |
| 357 GURL(), | 354 GURL()); |
| 358 true); | |
| 359 | 355 |
| 360 if (result) { | 356 if (result) { |
| 361 uintptr_t cookie = reinterpret_cast<uintptr_t>(new_container.get()); | 357 uintptr_t cookie = reinterpret_cast<uintptr_t>(new_container.get()); |
| 362 pending_tabs_[cookie] = new_container; | 358 pending_tabs_[cookie] = new_container; |
| 363 new_container->set_pending(true); | 359 new_container->set_pending(true); |
| 364 IPC::AttachExternalTabParams attach_params_; | 360 IPC::AttachExternalTabParams attach_params_; |
| 365 attach_params_.cookie = static_cast<uint64>(cookie); | 361 attach_params_.cookie = static_cast<uint64>(cookie); |
| 366 attach_params_.dimensions = initial_pos; | 362 attach_params_.dimensions = initial_pos; |
| 367 attach_params_.user_gesture = user_gesture; | 363 attach_params_.user_gesture = user_gesture; |
| 368 attach_params_.disposition = disposition; | 364 attach_params_.disposition = disposition; |
| 369 automation_->Send(new AutomationMsg_AttachExternalTab(0, | 365 automation_->Send(new AutomationMsg_AttachExternalTab(0, |
| 370 tab_handle_, attach_params_)); | 366 tab_handle_, attach_params_)); |
| 371 } else { | 367 } else { |
| 372 NOTREACHED(); | 368 NOTREACHED(); |
| 373 } | 369 } |
| 374 } | 370 } |
| 375 | 371 |
| 376 void ExternalTabContainer::TabContentsCreated(TabContents* new_contents) { | 372 void ExternalTabContainer::TabContentsCreated(TabContents* new_contents) { |
| 377 RenderViewHost* rvh = new_contents->render_view_host(); | 373 RenderViewHost* rvh = new_contents->render_view_host(); |
| 378 DCHECK(rvh != NULL); | 374 DCHECK(rvh != NULL); |
| 379 | 375 |
| 380 // Register this render view as a pending render view, i.e. any network | 376 // Register this render view as a pending render view, i.e. any network |
| 381 // requests initiated by this render view would be serviced when the | 377 // requests initiated by this render view would be serviced when the |
| 382 // external host connects to the new external tab instance. | 378 // external host connects to the new external tab instance. |
| 383 RegisterRenderViewHostForAutomation(rvh, true); | 379 RegisterRenderViewHostForAutomation(rvh, true); |
| 384 } | 380 } |
| 385 | 381 |
| 386 bool ExternalTabContainer::infobars_enabled() { | |
| 387 return infobars_enabled_; | |
| 388 } | |
| 389 | |
| 390 void ExternalTabContainer::ActivateContents(TabContents* contents) { | 382 void ExternalTabContainer::ActivateContents(TabContents* contents) { |
| 391 } | 383 } |
| 392 | 384 |
| 393 void ExternalTabContainer::LoadingStateChanged(TabContents* source) { | 385 void ExternalTabContainer::LoadingStateChanged(TabContents* source) { |
| 394 } | 386 } |
| 395 | 387 |
| 396 void ExternalTabContainer::CloseContents(TabContents* source) { | 388 void ExternalTabContainer::CloseContents(TabContents* source) { |
| 397 static const int kExternalTabCloseContentsDelayMS = 100; | 389 static const int kExternalTabCloseContentsDelayMS = 100; |
| 398 | 390 |
| 399 if (waiting_for_unload_event_) { | 391 if (waiting_for_unload_event_) { |
| (...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 958 | 950 |
| 959 layout->StartRow(0, 0); | 951 layout->StartRow(0, 0); |
| 960 layout->AddView(info_bar_container); | 952 layout->AddView(info_bar_container); |
| 961 layout->StartRow(1, 0); | 953 layout->StartRow(1, 0); |
| 962 layout->AddView(tab_contents_container_); | 954 layout->AddView(tab_contents_container_); |
| 963 SetContentsView(external_tab_view); | 955 SetContentsView(external_tab_view); |
| 964 // Note that SetTabContents must be called after AddChildView is called | 956 // Note that SetTabContents must be called after AddChildView is called |
| 965 tab_contents_container_->ChangeTabContents(tab_contents_); | 957 tab_contents_container_->ChangeTabContents(tab_contents_); |
| 966 } | 958 } |
| 967 | 959 |
| OLD | NEW |