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

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

Issue 1496033003: Make the webstore inline install dialog be tab-modal (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: incorporated review suggestions Created 5 years 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
« no previous file with comments | « chrome/browser/extensions/extension_install_prompt.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <algorithm>
8 #include <string>
7 #include <vector> 9 #include <vector>
8 10
9 #include "base/basictypes.h" 11 #include "base/basictypes.h"
10 #include "base/command_line.h" 12 #include "base/command_line.h"
11 #include "base/compiler_specific.h" 13 #include "base/compiler_specific.h"
12 #include "base/i18n/rtl.h" 14 #include "base/i18n/rtl.h"
13 #include "base/metrics/histogram.h" 15 #include "base/metrics/histogram.h"
14 #include "base/strings/string_util.h" 16 #include "base/strings/string_util.h"
15 #include "base/strings/utf_string_conversions.h" 17 #include "base/strings/utf_string_conversions.h"
16 #include "chrome/browser/browser_process.h" 18 #include "chrome/browser/browser_process.h"
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 void ShowExtensionInstallDialogImpl( 102 void ShowExtensionInstallDialogImpl(
101 ExtensionInstallPromptShowParams* show_params, 103 ExtensionInstallPromptShowParams* show_params,
102 ExtensionInstallPrompt::Delegate* delegate, 104 ExtensionInstallPrompt::Delegate* delegate,
103 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt) { 105 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt) {
104 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 106 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
105 ExtensionInstallDialogView* dialog = 107 ExtensionInstallDialogView* dialog =
106 new ExtensionInstallDialogView(show_params->profile(), 108 new ExtensionInstallDialogView(show_params->profile(),
107 show_params->GetParentWebContents(), 109 show_params->GetParentWebContents(),
108 delegate, 110 delegate,
109 prompt); 111 prompt);
110 constrained_window::CreateBrowserModalDialogViews( 112 if (prompt->ShouldUseTabModalDialog()) {
111 dialog, show_params->GetParentWindow())->Show(); 113 content::WebContents* parent_web_contents =
114 show_params->GetParentWebContents();
115 if (parent_web_contents)
116 constrained_window::ShowWebModalDialogViews(dialog, parent_web_contents);
117 } else {
118 constrained_window::CreateBrowserModalDialogViews(
119 dialog, show_params->GetParentWindow())
120 ->Show();
121 }
112 } 122 }
113 123
114 // A custom scrollable view implementation for the dialog. 124 // A custom scrollable view implementation for the dialog.
115 class CustomScrollableView : public views::View { 125 class CustomScrollableView : public views::View {
116 public: 126 public:
117 CustomScrollableView() {} 127 CustomScrollableView() {}
118 ~CustomScrollableView() override {} 128 ~CustomScrollableView() override {}
119 129
120 // Called when one of the child elements has expanded/collapsed. 130 // Called when one of the child elements has expanded/collapsed.
121 void ChildPreferredSizeChanged(views::View* child) override { 131 void ChildPreferredSizeChanged(views::View* child) override {
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 } 415 }
406 ExpandableContainerView* issue_advice_view = 416 ExpandableContainerView* issue_advice_view =
407 new ExpandableContainerView(this, 417 new ExpandableContainerView(this,
408 base::string16(), 418 base::string16(),
409 details, 419 details,
410 scrollable_width, 420 scrollable_width,
411 false); 421 false);
412 scroll_layout->AddView(issue_advice_view); 422 scroll_layout->AddView(issue_advice_view);
413 } 423 }
414 424
415 DCHECK(prompt_->type() >= 0); 425 DCHECK_GE(prompt_->type(), 0);
416 UMA_HISTOGRAM_ENUMERATION("Extensions.InstallPrompt.Type", 426 UMA_HISTOGRAM_ENUMERATION("Extensions.InstallPrompt.Type",
417 prompt_->type(), 427 prompt_->type(),
418 ExtensionInstallPrompt::NUM_PROMPT_TYPES); 428 ExtensionInstallPrompt::NUM_PROMPT_TYPES);
419 429
420 scroll_view_->ClipHeightTo( 430 scroll_view_->ClipHeightTo(
421 0, 431 0,
422 std::min(kScrollViewMaxHeight, scrollable->GetPreferredSize().height())); 432 std::min(kScrollViewMaxHeight, scrollable->GetPreferredSize().height()));
423 433
424 dialog_size_ = gfx::Size( 434 dialog_size_ = gfx::Size(
425 content_width + 2 * views::kButtonHEdgeMarginNew, 435 content_width + 2 * views::kButtonHEdgeMarginNew,
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 601
592 handled_result_ = true; 602 handled_result_ = true;
593 UpdateInstallResultHistogram(true); 603 UpdateInstallResultHistogram(true);
594 if (sampling_event_) 604 if (sampling_event_)
595 sampling_event_->CreateUserDecisionEvent(ExperienceSamplingEvent::kProceed); 605 sampling_event_->CreateUserDecisionEvent(ExperienceSamplingEvent::kProceed);
596 delegate_->InstallUIProceed(); 606 delegate_->InstallUIProceed();
597 return true; 607 return true;
598 } 608 }
599 609
600 ui::ModalType ExtensionInstallDialogView::GetModalType() const { 610 ui::ModalType ExtensionInstallDialogView::GetModalType() const {
601 return ui::MODAL_TYPE_WINDOW; 611 return prompt_->ShouldUseTabModalDialog() ? ui::MODAL_TYPE_CHILD
612 : ui::MODAL_TYPE_WINDOW;
602 } 613 }
603 614
604 void ExtensionInstallDialogView::LinkClicked(views::Link* source, 615 void ExtensionInstallDialogView::LinkClicked(views::Link* source,
605 int event_flags) { 616 int event_flags) {
606 GURL store_url(extension_urls::GetWebstoreItemDetailURLPrefix() + 617 GURL store_url(extension_urls::GetWebstoreItemDetailURLPrefix() +
607 prompt_->extension()->id()); 618 prompt_->extension()->id());
608 OpenURLParams params( 619 OpenURLParams params(
609 store_url, Referrer(), NEW_FOREGROUND_TAB, 620 store_url, Referrer(), NEW_FOREGROUND_TAB,
610 ui::PAGE_TRANSITION_LINK, 621 ui::PAGE_TRANSITION_LINK,
611 false); 622 false);
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
818 expanded ? gfx::VectorIconId::FIND_PREV : gfx::VectorIconId::FIND_NEXT, 829 expanded ? gfx::VectorIconId::FIND_PREV : gfx::VectorIconId::FIND_NEXT,
819 16, gfx::kChromeIconGrey); 830 16, gfx::kChromeIconGrey);
820 arrow_toggle_->SetImage(views::Button::STATE_NORMAL, &icon); 831 arrow_toggle_->SetImage(views::Button::STATE_NORMAL, &icon);
821 } 832 }
822 833
823 // static 834 // static
824 ExtensionInstallPrompt::ShowDialogCallback 835 ExtensionInstallPrompt::ShowDialogCallback
825 ExtensionInstallPrompt::GetDefaultShowDialogCallback() { 836 ExtensionInstallPrompt::GetDefaultShowDialogCallback() {
826 return base::Bind(&ShowExtensionInstallDialogImpl); 837 return base::Bind(&ShowExtensionInstallDialogImpl);
827 } 838 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_install_prompt.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698