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 <algorithm> | 5 #include <algorithm> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/memory/scoped_vector.h" | 8 #include "base/memory/scoped_vector.h" |
9 #include "base/time.h" | 9 #include "base/time.h" |
10 #include "chrome/browser/tab_contents/tab_util.h" | 10 #include "chrome/browser/tab_contents/tab_util.h" |
11 #include "chrome/browser/ui/browser.h" | |
12 #include "chrome/browser/ui/browser_navigator.h" | 11 #include "chrome/browser/ui/browser_navigator.h" |
13 #include "chrome/browser/ui/intents/web_intent_inline_disposition_delegate.h" | 12 #include "chrome/browser/ui/intents/web_intent_inline_disposition_delegate.h" |
14 #include "chrome/browser/ui/intents/web_intent_picker.h" | 13 #include "chrome/browser/ui/intents/web_intent_picker.h" |
15 #include "chrome/browser/ui/intents/web_intent_picker_delegate.h" | 14 #include "chrome/browser/ui/intents/web_intent_picker_delegate.h" |
16 #include "chrome/browser/ui/intents/web_intent_picker_model.h" | 15 #include "chrome/browser/ui/intents/web_intent_picker_model.h" |
17 #include "chrome/browser/ui/intents/web_intent_picker_model_observer.h" | 16 #include "chrome/browser/ui/intents/web_intent_picker_model_observer.h" |
18 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 17 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
19 #include "chrome/browser/ui/views/constrained_window_views.h" | 18 #include "chrome/browser/ui/views/constrained_window_views.h" |
20 #include "chrome/browser/ui/views/frame/browser_view.h" | 19 #include "chrome/browser/ui/views/frame/browser_view.h" |
21 #include "chrome/browser/ui/views/location_bar/location_icon_view.h" | 20 #include "chrome/browser/ui/views/location_bar/location_icon_view.h" |
(...skipping 633 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
655 | 654 |
656 // Views implementation of WebIntentPicker. | 655 // Views implementation of WebIntentPicker. |
657 class WebIntentPickerViews : public views::ButtonListener, | 656 class WebIntentPickerViews : public views::ButtonListener, |
658 public views::DialogDelegate, | 657 public views::DialogDelegate, |
659 public views::LinkListener, | 658 public views::LinkListener, |
660 public WebIntentPicker, | 659 public WebIntentPicker, |
661 public WebIntentPickerModelObserver, | 660 public WebIntentPickerModelObserver, |
662 public ServiceButtonsView::Delegate, | 661 public ServiceButtonsView::Delegate, |
663 public SuggestedExtensionsRowView::Delegate { | 662 public SuggestedExtensionsRowView::Delegate { |
664 public: | 663 public: |
665 WebIntentPickerViews(Browser* browser, | 664 WebIntentPickerViews(TabContentsWrapper* tab_contents, |
666 TabContentsWrapper* tab_contents, | |
667 WebIntentPickerDelegate* delegate, | 665 WebIntentPickerDelegate* delegate, |
668 WebIntentPickerModel* model); | 666 WebIntentPickerModel* model); |
669 virtual ~WebIntentPickerViews(); | 667 virtual ~WebIntentPickerViews(); |
670 | 668 |
671 // views::ButtonListener implementation. | 669 // views::ButtonListener implementation. |
672 virtual void ButtonPressed(views::Button* sender, | 670 virtual void ButtonPressed(views::Button* sender, |
673 const views::Event& event) OVERRIDE; | 671 const views::Event& event) OVERRIDE; |
674 | 672 |
675 // views::DialogDelegate implementation. | 673 // views::DialogDelegate implementation. |
676 virtual void WindowClosing() OVERRIDE; | 674 virtual void WindowClosing() OVERRIDE; |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
736 | 734 |
737 // A weak pointer to the header label for the extension suggestions. | 735 // A weak pointer to the header label for the extension suggestions. |
738 views::Label* suggestions_label_; | 736 views::Label* suggestions_label_; |
739 | 737 |
740 // A weak pointer to the extensions view. | 738 // A weak pointer to the extensions view. |
741 SuggestedExtensionsView* extensions_; | 739 SuggestedExtensionsView* extensions_; |
742 | 740 |
743 // Delegate for inline disposition tab contents. | 741 // Delegate for inline disposition tab contents. |
744 scoped_ptr<WebIntentInlineDispositionDelegate> inline_disposition_delegate_; | 742 scoped_ptr<WebIntentInlineDispositionDelegate> inline_disposition_delegate_; |
745 | 743 |
746 // A weak pointer to the browser this picker is in. | 744 // A weak pointer to the wrapper of the WebContents this picker is in. |
747 Browser* browser_; | 745 TabContentsWrapper* wrapper_; |
748 | 746 |
749 // A weak pointer to the WebView that hosts the WebContents being displayed. | 747 // A weak pointer to the WebView that hosts the WebContents being displayed. |
750 views::WebView* webview_; | 748 views::WebView* webview_; |
751 | 749 |
752 // A weak pointer to the view that contains all other views in the picker. | 750 // A weak pointer to the view that contains all other views in the picker. |
753 views::View* contents_; | 751 views::View* contents_; |
754 | 752 |
755 // A weak pointer to the constrained window. | 753 // A weak pointer to the constrained window. |
756 ConstrainedWindowViews* window_; | 754 ConstrainedWindowViews* window_; |
757 | 755 |
758 // A weak pointer to the more suggestions link. | 756 // A weak pointer to the more suggestions link. |
759 views::Link* more_suggestions_link_; | 757 views::Link* more_suggestions_link_; |
760 | 758 |
761 // A weak pointer to the choose another service link. | 759 // A weak pointer to the choose another service link. |
762 views::Link* choose_another_service_link_; | 760 views::Link* choose_another_service_link_; |
763 | 761 |
764 // Set to true when displaying the inline disposition web contents. Used to | 762 // Set to true when displaying the inline disposition web contents. Used to |
765 // prevent laying out the inline disposition widgets twice. | 763 // prevent laying out the inline disposition widgets twice. |
766 bool displaying_web_contents_; | 764 bool displaying_web_contents_; |
767 | 765 |
768 // Ownership of the WebContents we are displaying in the inline disposition. | 766 // Ownership of the WebContents we are displaying in the inline disposition. |
769 scoped_ptr<WebContents> inline_web_contents_; | 767 scoped_ptr<WebContents> inline_web_contents_; |
770 | 768 |
771 DISALLOW_COPY_AND_ASSIGN(WebIntentPickerViews); | 769 DISALLOW_COPY_AND_ASSIGN(WebIntentPickerViews); |
772 }; | 770 }; |
773 | 771 |
774 // static | 772 // static |
775 WebIntentPicker* WebIntentPicker::Create(Browser* browser, | 773 WebIntentPicker* WebIntentPicker::Create(TabContentsWrapper* wrapper, |
776 TabContentsWrapper* wrapper, | |
777 WebIntentPickerDelegate* delegate, | 774 WebIntentPickerDelegate* delegate, |
778 WebIntentPickerModel* model) { | 775 WebIntentPickerModel* model) { |
779 WebIntentPickerViews* picker = | 776 WebIntentPickerViews* picker = |
780 new WebIntentPickerViews(browser, wrapper, delegate, model); | 777 new WebIntentPickerViews(wrapper, delegate, model); |
781 | 778 |
782 return picker; | 779 return picker; |
783 } | 780 } |
784 | 781 |
785 WebIntentPickerViews::WebIntentPickerViews(Browser* browser, | 782 WebIntentPickerViews::WebIntentPickerViews(TabContentsWrapper* wrapper, |
786 TabContentsWrapper* wrapper, | |
787 WebIntentPickerDelegate* delegate, | 783 WebIntentPickerDelegate* delegate, |
788 WebIntentPickerModel* model) | 784 WebIntentPickerModel* model) |
789 : delegate_(delegate), | 785 : delegate_(delegate), |
790 model_(model), | 786 model_(model), |
791 service_buttons_(NULL), | 787 service_buttons_(NULL), |
792 action_label_(NULL), | 788 action_label_(NULL), |
793 suggestions_label_(NULL), | 789 suggestions_label_(NULL), |
794 extensions_(NULL), | 790 extensions_(NULL), |
795 browser_(browser), | 791 wrapper_(wrapper), |
796 webview_(new views::WebView(browser->profile())), | 792 webview_(new views::WebView(wrapper->profile())), |
797 contents_(NULL), | 793 contents_(NULL), |
798 window_(NULL), | 794 window_(NULL), |
799 more_suggestions_link_(NULL), | 795 more_suggestions_link_(NULL), |
800 choose_another_service_link_(NULL), | 796 choose_another_service_link_(NULL), |
801 displaying_web_contents_(false) { | 797 displaying_web_contents_(false) { |
802 model_->set_observer(this); | 798 model_->set_observer(this); |
803 InitContents(); | 799 InitContents(); |
804 | 800 |
805 // Show the dialog. | 801 // Show the dialog. |
806 window_ = new ConstrainedWindowViews(wrapper, this); | 802 window_ = new ConstrainedWindowViews(wrapper, this); |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
960 WebIntentPickerModel* model, | 956 WebIntentPickerModel* model, |
961 const string16& extension_id) { | 957 const string16& extension_id) { |
962 extensions_->Update(); | 958 extensions_->Update(); |
963 contents_->Layout(); | 959 contents_->Layout(); |
964 SizeToContents(); | 960 SizeToContents(); |
965 } | 961 } |
966 | 962 |
967 void WebIntentPickerViews::OnInlineDisposition( | 963 void WebIntentPickerViews::OnInlineDisposition( |
968 WebIntentPickerModel* model, const GURL& url) { | 964 WebIntentPickerModel* model, const GURL& url) { |
969 inline_web_contents_.reset(WebContents::Create( | 965 inline_web_contents_.reset(WebContents::Create( |
970 browser_->profile(), | 966 wrapper_->profile(), |
971 tab_util::GetSiteInstanceForNewTab(browser_->profile(), url), | 967 tab_util::GetSiteInstanceForNewTab(wrapper_->profile(), url), |
972 MSG_ROUTING_NONE, NULL, NULL)); | 968 MSG_ROUTING_NONE, NULL, NULL)); |
973 // Does not take ownership, so we keep a scoped_ptr | 969 // Does not take ownership, so we keep a scoped_ptr |
974 // for the WebContents locally. | 970 // for the WebContents locally. |
975 webview_->SetWebContents(inline_web_contents_.get()); | 971 webview_->SetWebContents(inline_web_contents_.get()); |
976 inline_disposition_delegate_.reset( | 972 inline_disposition_delegate_.reset( |
977 new WebIntentInlineDispositionDelegate(this)); | 973 new WebIntentInlineDispositionDelegate(this)); |
978 content::WebContents* web_contents = webview_->GetWebContents(); | 974 content::WebContents* web_contents = webview_->GetWebContents(); |
979 web_contents->SetDelegate(inline_disposition_delegate_.get()); | 975 web_contents->SetDelegate(inline_disposition_delegate_.get()); |
980 | 976 |
981 const WebIntentPickerModel::InstalledService* service = | 977 const WebIntentPickerModel::InstalledService* service = |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1116 views::ImageButton* close_button = new views::ImageButton(this); | 1112 views::ImageButton* close_button = new views::ImageButton(this); |
1117 close_button->SetImage(views::CustomButton::BS_NORMAL, | 1113 close_button->SetImage(views::CustomButton::BS_NORMAL, |
1118 rb.GetBitmapNamed(IDR_CLOSE_BAR)); | 1114 rb.GetBitmapNamed(IDR_CLOSE_BAR)); |
1119 close_button->SetImage(views::CustomButton::BS_HOT, | 1115 close_button->SetImage(views::CustomButton::BS_HOT, |
1120 rb.GetBitmapNamed(IDR_CLOSE_BAR_H)); | 1116 rb.GetBitmapNamed(IDR_CLOSE_BAR_H)); |
1121 close_button->SetImage(views::CustomButton::BS_PUSHED, | 1117 close_button->SetImage(views::CustomButton::BS_PUSHED, |
1122 rb.GetBitmapNamed(IDR_CLOSE_BAR_P)); | 1118 rb.GetBitmapNamed(IDR_CLOSE_BAR_P)); |
1123 return close_button; | 1119 return close_button; |
1124 } | 1120 } |
1125 #endif | 1121 #endif |
OLD | NEW |