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

Side by Side Diff: chrome/browser/ui/views/extensions/extension_install_dialog_view.cc

Issue 547253002: Ensure app install is aborted when the install dialog is closed (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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) 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/views/extensions/extension_install_dialog_view.h" 5 #include "chrome/browser/ui/views/extensions/extension_install_dialog_view.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 ExtensionInstallPrompt::Delegate* delegate, 188 ExtensionInstallPrompt::Delegate* delegate,
189 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt) 189 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt)
190 : navigator_(navigator), 190 : navigator_(navigator),
191 delegate_(delegate), 191 delegate_(delegate),
192 prompt_(prompt), 192 prompt_(prompt),
193 scroll_view_(NULL), 193 scroll_view_(NULL),
194 scrollable_(NULL), 194 scrollable_(NULL),
195 scrollable_header_only_(NULL), 195 scrollable_header_only_(NULL),
196 show_details_link_(NULL), 196 show_details_link_(NULL),
197 checkbox_info_label_(NULL), 197 checkbox_info_label_(NULL),
198 unchecked_boxes_(0) { 198 unchecked_boxes_(0),
199 handled_result_(false) {
199 // Possible grid layouts without ExtensionPermissionDialog experiment: 200 // Possible grid layouts without ExtensionPermissionDialog experiment:
200 // Inline install 201 // Inline install
201 // w/ permissions no permissions 202 // w/ permissions no permissions
202 // +--------------------+------+ +--------------+------+ 203 // +--------------------+------+ +--------------+------+
203 // | heading | icon | | heading | icon | 204 // | heading | icon | | heading | icon |
204 // +--------------------| | +--------------| | 205 // +--------------------| | +--------------| |
205 // | rating | | | rating | | 206 // | rating | | | rating | |
206 // +--------------------| | +--------------+ | 207 // +--------------------| | +--------------+ |
207 // | user_count | | | user_count | | 208 // | user_count | | | user_count | |
208 // +--------------------| | +--------------| | 209 // +--------------------| | +--------------| |
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 NOTREACHED(); 708 NOTREACHED();
708 return base::string16(); 709 return base::string16();
709 } 710 }
710 } 711 }
711 712
712 int ExtensionInstallDialogView::GetDefaultDialogButton() const { 713 int ExtensionInstallDialogView::GetDefaultDialogButton() const {
713 return ui::DIALOG_BUTTON_CANCEL; 714 return ui::DIALOG_BUTTON_CANCEL;
714 } 715 }
715 716
716 bool ExtensionInstallDialogView::Cancel() { 717 bool ExtensionInstallDialogView::Cancel() {
717 UpdateInstallResultHistogram(false); 718 OnInstallAborted();
718 if (sampling_event_.get())
719 sampling_event_->CreateUserDecisionEvent(ExperienceSamplingEvent::kDeny);
720 delegate_->InstallUIAbort(true);
721 return true; 719 return true;
722 } 720 }
723 721
724 bool ExtensionInstallDialogView::Accept() { 722 bool ExtensionInstallDialogView::Accept() {
723 DCHECK(!handled_result_);
724
725 handled_result_ = true;
725 UpdateInstallResultHistogram(true); 726 UpdateInstallResultHistogram(true);
726 if (sampling_event_.get()) 727 if (sampling_event_.get())
727 sampling_event_->CreateUserDecisionEvent(ExperienceSamplingEvent::kProceed); 728 sampling_event_->CreateUserDecisionEvent(ExperienceSamplingEvent::kProceed);
728 delegate_->InstallUIProceed(); 729 delegate_->InstallUIProceed();
729 return true; 730 return true;
730 } 731 }
731 732
733 void ExtensionInstallDialogView::OnClosed() {
734 // The install dialog may have been closed without the user selecting accept
735 // or cancel, so ensure this case is treated as an abort.
736 OnInstallAborted();
737 }
738
732 ui::ModalType ExtensionInstallDialogView::GetModalType() const { 739 ui::ModalType ExtensionInstallDialogView::GetModalType() const {
733 return ui::MODAL_TYPE_WINDOW; 740 return ui::MODAL_TYPE_WINDOW;
734 } 741 }
735 742
736 base::string16 ExtensionInstallDialogView::GetWindowTitle() const { 743 base::string16 ExtensionInstallDialogView::GetWindowTitle() const {
737 return prompt_->GetDialogTitle(); 744 return prompt_->GetDialogTitle();
738 } 745 }
739 746
740 void ExtensionInstallDialogView::LinkClicked(views::Link* source, 747 void ExtensionInstallDialogView::LinkClicked(views::Link* source,
741 int event_flags) { 748 int event_flags) {
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
848 NUM_LINK_ACTIONS); 855 NUM_LINK_ACTIONS);
849 } else { 856 } else {
850 // The clickable link in the UI is "Show Details". 857 // The clickable link in the UI is "Show Details".
851 UMA_HISTOGRAM_ENUMERATION( 858 UMA_HISTOGRAM_ENUMERATION(
852 "Extensions.InstallPromptExperiment.ShowDetails", 859 "Extensions.InstallPromptExperiment.ShowDetails",
853 action_type, 860 action_type,
854 NUM_LINK_ACTIONS); 861 NUM_LINK_ACTIONS);
855 } 862 }
856 } 863 }
857 864
865 void ExtensionInstallDialogView::OnInstallAborted() {
866 if (handled_result_)
867 return;
868
869 handled_result_ = true;
870 UpdateInstallResultHistogram(false);
871 if (sampling_event_.get())
tapted 2014/09/08 07:42:20 nit: pretty sure Chrome prefers dropping the `.get
tmdiep 2014/09/08 08:26:08 Done.
872 sampling_event_->CreateUserDecisionEvent(ExperienceSamplingEvent::kDeny);
873 delegate_->InstallUIAbort(true);
874 }
875
858 // ExpandableContainerView::DetailsView ---------------------------------------- 876 // ExpandableContainerView::DetailsView ----------------------------------------
859 877
860 ExpandableContainerView::DetailsView::DetailsView(int horizontal_space, 878 ExpandableContainerView::DetailsView::DetailsView(int horizontal_space,
861 bool parent_bulleted, 879 bool parent_bulleted,
862 bool lighter_color) 880 bool lighter_color)
863 : layout_(new views::GridLayout(this)), 881 : layout_(new views::GridLayout(this)),
864 state_(0), 882 state_(0),
865 lighter_color_(lighter_color) { 883 lighter_color_(lighter_color) {
866 SetLayoutManager(layout_); 884 SetLayoutManager(layout_);
867 views::ColumnSet* column_set = layout_->AddColumnSet(0); 885 views::ColumnSet* column_set = layout_->AddColumnSet(0);
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
1067 void ExpandableContainerView::ExpandWithoutAnimation() { 1085 void ExpandableContainerView::ExpandWithoutAnimation() {
1068 expanded_ = true; 1086 expanded_ = true;
1069 details_view_->AnimateToState(1.0); 1087 details_view_->AnimateToState(1.0);
1070 } 1088 }
1071 1089
1072 // static 1090 // static
1073 ExtensionInstallPrompt::ShowDialogCallback 1091 ExtensionInstallPrompt::ShowDialogCallback
1074 ExtensionInstallPrompt::GetDefaultShowDialogCallback() { 1092 ExtensionInstallPrompt::GetDefaultShowDialogCallback() {
1075 return base::Bind(&ShowExtensionInstallDialogImpl); 1093 return base::Bind(&ShowExtensionInstallDialogImpl);
1076 } 1094 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698