| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/ui/tabs/tab_strip_model.h" | 5 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 #include "content/public/browser/navigation_entry.h" | 32 #include "content/public/browser/navigation_entry.h" |
| 33 #include "content/public/browser/render_process_host.h" | 33 #include "content/public/browser/render_process_host.h" |
| 34 #include "content/public/browser/web_contents.h" | 34 #include "content/public/browser/web_contents.h" |
| 35 #include "content/public/browser/web_contents_observer.h" | 35 #include "content/public/browser/web_contents_observer.h" |
| 36 #include "extensions/common/extension.h" | 36 #include "extensions/common/extension.h" |
| 37 #include "testing/gtest/include/gtest/gtest.h" | 37 #include "testing/gtest/include/gtest/gtest.h" |
| 38 | 38 |
| 39 using content::SiteInstance; | 39 using content::SiteInstance; |
| 40 using content::WebContents; | 40 using content::WebContents; |
| 41 using extensions::Extension; | 41 using extensions::Extension; |
| 42 using web_modal::NativeWebContentsModalDialog; | |
| 43 | 42 |
| 44 namespace { | 43 namespace { |
| 45 | 44 |
| 46 // Class used to delete a WebContents and TabStripModel when another WebContents | 45 // Class used to delete a WebContents and TabStripModel when another WebContents |
| 47 // is destroyed. | 46 // is destroyed. |
| 48 class DeleteWebContentsOnDestroyedObserver | 47 class DeleteWebContentsOnDestroyedObserver |
| 49 : public content::WebContentsObserver { | 48 : public content::WebContentsObserver { |
| 50 public: | 49 public: |
| 51 // When |source| is deleted both |tab_to_delete| and |tab_strip| are deleted. | 50 // When |source| is deleted both |tab_to_delete| and |tab_strip| are deleted. |
| 52 // |tab_to_delete| and |tab_strip| may be NULL. | 51 // |tab_to_delete| and |tab_strip| may be NULL. |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 int id() { return id_; } | 100 int id() { return id_; } |
| 102 | 101 |
| 103 private: | 102 private: |
| 104 int id_; | 103 int id_; |
| 105 }; | 104 }; |
| 106 | 105 |
| 107 class DummySingleWebContentsDialogManager | 106 class DummySingleWebContentsDialogManager |
| 108 : public web_modal::SingleWebContentsDialogManager { | 107 : public web_modal::SingleWebContentsDialogManager { |
| 109 public: | 108 public: |
| 110 explicit DummySingleWebContentsDialogManager( | 109 explicit DummySingleWebContentsDialogManager( |
| 111 NativeWebContentsModalDialog dialog, | 110 gfx::NativeWindow dialog, |
| 112 web_modal::SingleWebContentsDialogManagerDelegate* delegate) | 111 web_modal::SingleWebContentsDialogManagerDelegate* delegate) |
| 113 : delegate_(delegate), | 112 : delegate_(delegate), |
| 114 dialog_(dialog) {} | 113 dialog_(dialog) {} |
| 115 ~DummySingleWebContentsDialogManager() override {} | 114 ~DummySingleWebContentsDialogManager() override {} |
| 116 | 115 |
| 117 void Show() override {} | 116 void Show() override {} |
| 118 void Hide() override {} | 117 void Hide() override {} |
| 119 void Close() override { delegate_->WillClose(dialog_); } | 118 void Close() override { delegate_->WillClose(dialog_); } |
| 120 void Focus() override {} | 119 void Focus() override {} |
| 121 void Pulse() override {} | 120 void Pulse() override {} |
| 122 void HostChanged(web_modal::WebContentsModalDialogHost* new_host) override {} | 121 void HostChanged(web_modal::WebContentsModalDialogHost* new_host) override {} |
| 123 NativeWebContentsModalDialog dialog() override { return dialog_; } | 122 gfx::NativeWindow dialog() override { return dialog_; } |
| 124 | 123 |
| 125 private: | 124 private: |
| 126 web_modal::SingleWebContentsDialogManagerDelegate* delegate_; | 125 web_modal::SingleWebContentsDialogManagerDelegate* delegate_; |
| 127 NativeWebContentsModalDialog dialog_; | 126 gfx::NativeWindow dialog_; |
| 128 | 127 |
| 129 DISALLOW_COPY_AND_ASSIGN(DummySingleWebContentsDialogManager); | 128 DISALLOW_COPY_AND_ASSIGN(DummySingleWebContentsDialogManager); |
| 130 }; | 129 }; |
| 131 | 130 |
| 132 // Test Browser-like class for TabStripModelTest.TabBlockedState. | 131 // Test Browser-like class for TabStripModelTest.TabBlockedState. |
| 133 class TabBlockedStateTestBrowser | 132 class TabBlockedStateTestBrowser |
| 134 : public TabStripModelObserver, | 133 : public TabStripModelObserver, |
| 135 public web_modal::WebContentsModalDialogManagerDelegate { | 134 public web_modal::WebContentsModalDialogManagerDelegate { |
| 136 public: | 135 public: |
| 137 explicit TabBlockedStateTestBrowser(TabStripModel* tab_strip_model) | 136 explicit TabBlockedStateTestBrowser(TabStripModel* tab_strip_model) |
| (...skipping 2523 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2661 TabBlockedStateTestBrowser browser_dst(&strip_dst); | 2660 TabBlockedStateTestBrowser browser_dst(&strip_dst); |
| 2662 | 2661 |
| 2663 // Setup a SingleWebContentsDialogManager for tab |contents2|. | 2662 // Setup a SingleWebContentsDialogManager for tab |contents2|. |
| 2664 web_modal::WebContentsModalDialogManager* modal_dialog_manager = | 2663 web_modal::WebContentsModalDialogManager* modal_dialog_manager = |
| 2665 web_modal::WebContentsModalDialogManager::FromWebContents(contents2); | 2664 web_modal::WebContentsModalDialogManager::FromWebContents(contents2); |
| 2666 web_modal::PopupManager popup_manager(NULL); | 2665 web_modal::PopupManager popup_manager(NULL); |
| 2667 popup_manager.RegisterWith(contents2); | 2666 popup_manager.RegisterWith(contents2); |
| 2668 | 2667 |
| 2669 // Show a dialog that blocks tab |contents2|. | 2668 // Show a dialog that blocks tab |contents2|. |
| 2670 // DummySingleWebContentsDialogManager doesn't care about the | 2669 // DummySingleWebContentsDialogManager doesn't care about the |
| 2671 // NativeWebContentsModalDialog value, so any dummy value works. | 2670 // dialog window value, so any dummy value works. |
| 2672 DummySingleWebContentsDialogManager* native_manager = | 2671 DummySingleWebContentsDialogManager* native_manager = |
| 2673 new DummySingleWebContentsDialogManager( | 2672 new DummySingleWebContentsDialogManager( |
| 2674 reinterpret_cast<NativeWebContentsModalDialog>(0), | 2673 reinterpret_cast<gfx::NativeWindow>(0), modal_dialog_manager); |
| 2675 modal_dialog_manager); | |
| 2676 modal_dialog_manager->ShowDialogWithManager( | 2674 modal_dialog_manager->ShowDialogWithManager( |
| 2677 reinterpret_cast<NativeWebContentsModalDialog>(0), | 2675 reinterpret_cast<gfx::NativeWindow>(0), |
| 2678 scoped_ptr<web_modal::SingleWebContentsDialogManager>( | 2676 scoped_ptr<web_modal::SingleWebContentsDialogManager>( |
| 2679 native_manager).Pass()); | 2677 native_manager).Pass()); |
| 2680 EXPECT_TRUE(strip_src.IsTabBlocked(1)); | 2678 EXPECT_TRUE(strip_src.IsTabBlocked(1)); |
| 2681 | 2679 |
| 2682 // Detach the tab. | 2680 // Detach the tab. |
| 2683 WebContents* moved_contents = strip_src.DetachWebContentsAt(1); | 2681 WebContents* moved_contents = strip_src.DetachWebContentsAt(1); |
| 2684 EXPECT_EQ(contents2, moved_contents); | 2682 EXPECT_EQ(contents2, moved_contents); |
| 2685 | 2683 |
| 2686 // Attach the tab to the destination tab strip. | 2684 // Attach the tab to the destination tab strip. |
| 2687 strip_dst.AppendWebContents(moved_contents, true); | 2685 strip_dst.AppendWebContents(moved_contents, true); |
| 2688 EXPECT_TRUE(strip_dst.IsTabBlocked(0)); | 2686 EXPECT_TRUE(strip_dst.IsTabBlocked(0)); |
| 2689 | 2687 |
| 2690 strip_dst.CloseAllTabs(); | 2688 strip_dst.CloseAllTabs(); |
| 2691 strip_src.CloseAllTabs(); | 2689 strip_src.CloseAllTabs(); |
| 2692 } | 2690 } |
| OLD | NEW |