| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/first_run_dialog.h" | 5 #include "chrome/browser/ui/views/first_run_dialog.h" |
| 6 | 6 |
| 7 #include "chrome/browser/first_run/first_run.h" | 7 #include "chrome/browser/first_run/first_run.h" |
| 8 #include "chrome/browser/platform_util.h" | 8 #include "chrome/browser/platform_util.h" |
| 9 #include "chrome/browser/shell_integration.h" | 9 #include "chrome/browser/shell_integration.h" |
| 10 #include "chrome/common/pref_names.h" | 10 #include "chrome/common/pref_names.h" |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 | 58 |
| 59 // Use the widget's window itself so that the message loop | 59 // Use the widget's window itself so that the message loop |
| 60 // exists when the dialog is closed by some other means than | 60 // exists when the dialog is closed by some other means than |
| 61 // |Accept|. | 61 // |Accept|. |
| 62 // | 62 // |
| 63 // This is the same trick used in simple_message_box_views.cc, minus the | 63 // This is the same trick used in simple_message_box_views.cc, minus the |
| 64 // refcounting. | 64 // refcounting. |
| 65 aura::Window* anchor = dialog->GetWidget()->GetNativeWindow(); | 65 aura::Window* anchor = dialog->GetWidget()->GetNativeWindow(); |
| 66 aura::client::DispatcherClient* client = | 66 aura::client::DispatcherClient* client = |
| 67 aura::client::GetDispatcherClient(anchor->GetRootWindow()); | 67 aura::client::GetDispatcherClient(anchor->GetRootWindow()); |
| 68 client->RunWithDispatcher(NULL, anchor); | 68 client->RunWithDispatcher(dialog, anchor); |
| 69 dialog_shown = true; | 69 dialog_shown = true; |
| 70 } | 70 } |
| 71 #endif // defined(GOOGLE_CHROME_BUILD) | 71 #endif // defined(GOOGLE_CHROME_BUILD) |
| 72 | 72 |
| 73 return dialog_shown; | 73 return dialog_shown; |
| 74 } | 74 } |
| 75 | 75 |
| 76 FirstRunDialog::FirstRunDialog(Profile* profile) | 76 FirstRunDialog::FirstRunDialog(Profile* profile) |
| 77 : profile_(profile), | 77 : profile_(profile), |
| 78 make_default_(NULL), | 78 make_default_(NULL), |
| 79 report_crashes_(NULL) { | 79 report_crashes_(NULL), |
| 80 should_show_dialog_(true) { |
| 80 GridLayout* layout = GridLayout::CreatePanel(this); | 81 GridLayout* layout = GridLayout::CreatePanel(this); |
| 81 SetLayoutManager(layout); | 82 SetLayoutManager(layout); |
| 82 | 83 |
| 83 const int related_y = views::kRelatedControlVerticalSpacing; | 84 const int related_y = views::kRelatedControlVerticalSpacing; |
| 84 | 85 |
| 85 views::ColumnSet* column_set = layout->AddColumnSet(0); | 86 views::ColumnSet* column_set = layout->AddColumnSet(0); |
| 86 column_set->AddColumn(GridLayout::FILL, GridLayout::CENTER, 0, | 87 column_set->AddColumn(GridLayout::FILL, GridLayout::CENTER, 0, |
| 87 GridLayout::USE_PREF, 0, 0); | 88 GridLayout::USE_PREF, 0, 0); |
| 88 | 89 |
| 89 layout->StartRow(0, 0); | 90 layout->StartRow(0, 0); |
| 90 make_default_ = new views::Checkbox(l10n_util::GetStringUTF16( | 91 make_default_ = new views::Checkbox(l10n_util::GetStringUTF16( |
| 91 IDS_FR_CUSTOMIZE_DEFAULT_BROWSER)); | 92 IDS_FR_CUSTOMIZE_DEFAULT_BROWSER)); |
| 92 make_default_->SetChecked(true); | 93 make_default_->SetChecked(true); |
| 93 layout->AddView(make_default_); | 94 layout->AddView(make_default_); |
| 94 | 95 |
| 95 layout->StartRowWithPadding(0, 0, 0, related_y); | 96 layout->StartRowWithPadding(0, 0, 0, related_y); |
| 96 report_crashes_ = new views::Checkbox(l10n_util::GetStringUTF16( | 97 report_crashes_ = new views::Checkbox(l10n_util::GetStringUTF16( |
| 97 IDS_OPTIONS_ENABLE_LOGGING)); | 98 IDS_OPTIONS_ENABLE_LOGGING)); |
| 98 layout->AddView(report_crashes_); | 99 layout->AddView(report_crashes_); |
| 99 } | 100 } |
| 100 | 101 |
| 101 FirstRunDialog::~FirstRunDialog() { | 102 FirstRunDialog::~FirstRunDialog() { |
| 102 } | 103 } |
| 103 | 104 |
| 104 void FirstRunDialog::Done() { | |
| 105 aura::Window* window = GetWidget()->GetNativeView(); | |
| 106 aura::client::DispatcherClient* client = | |
| 107 aura::client::GetDispatcherClient(window->GetRootWindow()); | |
| 108 client->QuitNestedMessageLoop(); | |
| 109 } | |
| 110 | |
| 111 views::View* FirstRunDialog::CreateExtraView() { | 105 views::View* FirstRunDialog::CreateExtraView() { |
| 112 views::Link* link = new views::Link(l10n_util::GetStringUTF16( | 106 views::Link* link = new views::Link(l10n_util::GetStringUTF16( |
| 113 IDS_LEARN_MORE)); | 107 IDS_LEARN_MORE)); |
| 114 link->set_listener(this); | 108 link->set_listener(this); |
| 115 return link; | 109 return link; |
| 116 } | 110 } |
| 117 | 111 |
| 118 void FirstRunDialog::OnClosed() { | 112 void FirstRunDialog::OnClosed() { |
| 113 should_show_dialog_ = false; |
| 119 first_run::SetShouldShowWelcomePage(); | 114 first_run::SetShouldShowWelcomePage(); |
| 120 Done(); | |
| 121 } | 115 } |
| 122 | 116 |
| 123 bool FirstRunDialog::Accept() { | 117 bool FirstRunDialog::Accept() { |
| 118 should_show_dialog_ = false; |
| 124 GetWidget()->Hide(); | 119 GetWidget()->Hide(); |
| 125 | 120 |
| 126 if (report_crashes_ && report_crashes_->checked()) { | 121 if (report_crashes_ && report_crashes_->checked()) { |
| 127 if (GoogleUpdateSettings::SetCollectStatsConsent(true)) | 122 if (GoogleUpdateSettings::SetCollectStatsConsent(true)) |
| 128 breakpad::InitCrashReporter(std::string()); | 123 breakpad::InitCrashReporter(std::string()); |
| 129 } else { | 124 } else { |
| 130 GoogleUpdateSettings::SetCollectStatsConsent(false); | 125 GoogleUpdateSettings::SetCollectStatsConsent(false); |
| 131 } | 126 } |
| 132 | 127 |
| 133 if (make_default_ && make_default_->checked()) | 128 if (make_default_ && make_default_->checked()) |
| 134 ShellIntegration::SetAsDefaultBrowser(); | 129 ShellIntegration::SetAsDefaultBrowser(); |
| 135 | 130 |
| 136 Done(); | |
| 137 return true; | 131 return true; |
| 138 } | 132 } |
| 139 | 133 |
| 140 int FirstRunDialog::GetDialogButtons() const { | 134 int FirstRunDialog::GetDialogButtons() const { |
| 141 return ui::DIALOG_BUTTON_OK; | 135 return ui::DIALOG_BUTTON_OK; |
| 142 } | 136 } |
| 143 | 137 |
| 144 void FirstRunDialog::LinkClicked(views::Link* source, int event_flags) { | 138 void FirstRunDialog::LinkClicked(views::Link* source, int event_flags) { |
| 145 platform_util::OpenExternal(profile_, GURL(chrome::kLearnMoreReportingURL)); | 139 platform_util::OpenExternal(profile_, GURL(chrome::kLearnMoreReportingURL)); |
| 146 } | 140 } |
| 141 |
| 142 uint32_t FirstRunDialog::Dispatch(const base::NativeEvent& event) { |
| 143 uint32_t action = POST_DISPATCH_PERFORM_DEFAULT; |
| 144 if (!should_show_dialog_) |
| 145 action |= POST_DISPATCH_QUIT_LOOP; |
| 146 return action; |
| 147 } |
| OLD | NEW |