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

Side by Side Diff: chrome/browser/ui/views/session_crashed_bubble_view.cc

Issue 398073003: Correct when bubble_shown should be recorded (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments Created 6 years, 5 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
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/session_crashed_bubble_view.h" 5 #include "chrome/browser/ui/views/session_crashed_bubble_view.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 const char kEnableBubbleUIGroupEnabled[] = "Enabled"; 67 const char kEnableBubbleUIGroupEnabled[] = "Enabled";
68 68
69 enum SessionCrashedBubbleHistogramValue { 69 enum SessionCrashedBubbleHistogramValue {
70 SESSION_CRASHED_BUBBLE_SHOWN, 70 SESSION_CRASHED_BUBBLE_SHOWN,
71 SESSION_CRASHED_BUBBLE_ERROR, 71 SESSION_CRASHED_BUBBLE_ERROR,
72 SESSION_CRASHED_BUBBLE_RESTORED, 72 SESSION_CRASHED_BUBBLE_RESTORED,
73 SESSION_CRASHED_BUBBLE_ALREADY_UMA_OPTIN, 73 SESSION_CRASHED_BUBBLE_ALREADY_UMA_OPTIN,
74 SESSION_CRASHED_BUBBLE_UMA_OPTIN, 74 SESSION_CRASHED_BUBBLE_UMA_OPTIN,
75 SESSION_CRASHED_BUBBLE_HELP, 75 SESSION_CRASHED_BUBBLE_HELP,
76 SESSION_CRASHED_BUBBLE_IGNORED, 76 SESSION_CRASHED_BUBBLE_IGNORED,
77 SESSION_CRASHED_BUBBLE_OPTIN_BAR_SHOWN,
77 SESSION_CRASHED_BUBBLE_MAX, 78 SESSION_CRASHED_BUBBLE_MAX,
78 }; 79 };
79 80
80 void RecordBubbleHistogramValue(SessionCrashedBubbleHistogramValue value) { 81 void RecordBubbleHistogramValue(SessionCrashedBubbleHistogramValue value) {
81 UMA_HISTOGRAM_ENUMERATION( 82 UMA_HISTOGRAM_ENUMERATION(
82 "SessionCrashed.Bubble", value, SESSION_CRASHED_BUBBLE_MAX); 83 "SessionCrashed.Bubble", value, SESSION_CRASHED_BUBBLE_MAX);
83 } 84 }
84 85
85 // Whether or not the bubble UI should be used. 86 // Whether or not the bubble UI should be used.
86 bool IsBubbleUIEnabled() { 87 bool IsBubbleUIEnabled() {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 // static 153 // static
153 void SessionCrashedBubbleView::ShowForReal( 154 void SessionCrashedBubbleView::ShowForReal(
154 scoped_ptr<BrowserRemovalObserver> browser_observer, 155 scoped_ptr<BrowserRemovalObserver> browser_observer,
155 bool uma_opted_in_already) { 156 bool uma_opted_in_already) {
156 // Determine whether or not the uma opt-in option should be offered. It is 157 // Determine whether or not the uma opt-in option should be offered. It is
157 // offered only when it is a Google chrome build, user hasn't opted in yet, 158 // offered only when it is a Google chrome build, user hasn't opted in yet,
158 // and the preference is modifiable by the user. 159 // and the preference is modifiable by the user.
159 bool offer_uma_optin = false; 160 bool offer_uma_optin = false;
160 161
161 #if defined(GOOGLE_CHROME_BUILD) 162 #if defined(GOOGLE_CHROME_BUILD)
162 if (uma_opted_in_already) { 163 if (!uma_opted_in_already) {
163 RecordBubbleHistogramValue(SESSION_CRASHED_BUBBLE_ALREADY_UMA_OPTIN);
164 } else {
165 offer_uma_optin = g_browser_process->local_state()->FindPreference( 164 offer_uma_optin = g_browser_process->local_state()->FindPreference(
166 prefs::kMetricsReportingEnabled)->IsUserModifiable(); 165 prefs::kMetricsReportingEnabled)->IsUserModifiable();
167 } 166 }
168 #endif // defined(GOOGLE_CHROME_BUILD) 167 #endif // defined(GOOGLE_CHROME_BUILD)
169 168
170 Browser* browser = browser_observer->browser(); 169 Browser* browser = browser_observer->browser();
171 170
172 if (!browser) { 171 if (!browser) {
173 RecordBubbleHistogramValue(SESSION_CRASHED_BUBBLE_ERROR); 172 RecordBubbleHistogramValue(SESSION_CRASHED_BUBBLE_ERROR);
174 return; 173 return;
175 } 174 }
176 175
177 views::View* anchor_view = 176 views::View* anchor_view =
178 BrowserView::GetBrowserViewForBrowser(browser)->toolbar()->app_menu(); 177 BrowserView::GetBrowserViewForBrowser(browser)->toolbar()->app_menu();
179 content::WebContents* web_contents = 178 content::WebContents* web_contents =
180 browser->tab_strip_model()->GetActiveWebContents(); 179 browser->tab_strip_model()->GetActiveWebContents();
181 180
182 if (!web_contents) { 181 if (!web_contents) {
183 RecordBubbleHistogramValue(SESSION_CRASHED_BUBBLE_ERROR); 182 RecordBubbleHistogramValue(SESSION_CRASHED_BUBBLE_ERROR);
184 return; 183 return;
185 } 184 }
186 185
187 SessionCrashedBubbleView* crash_bubble = 186 SessionCrashedBubbleView* crash_bubble =
188 new SessionCrashedBubbleView(anchor_view, browser, web_contents, 187 new SessionCrashedBubbleView(anchor_view, browser, web_contents,
189 offer_uma_optin); 188 offer_uma_optin);
190 views::BubbleDelegateView::CreateBubble(crash_bubble)->Show(); 189 views::BubbleDelegateView::CreateBubble(crash_bubble)->Show();
190
191 RecordBubbleHistogramValue(SESSION_CRASHED_BUBBLE_SHOWN); 191 RecordBubbleHistogramValue(SESSION_CRASHED_BUBBLE_SHOWN);
192 if (uma_opted_in_already)
193 RecordBubbleHistogramValue(SESSION_CRASHED_BUBBLE_ALREADY_UMA_OPTIN);
192 } 194 }
193 195
194 SessionCrashedBubbleView::SessionCrashedBubbleView( 196 SessionCrashedBubbleView::SessionCrashedBubbleView(
195 views::View* anchor_view, 197 views::View* anchor_view,
196 Browser* browser, 198 Browser* browser,
197 content::WebContents* web_contents, 199 content::WebContents* web_contents,
198 bool offer_uma_optin) 200 bool offer_uma_optin)
199 : BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT), 201 : BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT),
200 content::WebContentsObserver(web_contents), 202 content::WebContentsObserver(web_contents),
201 browser_(browser), 203 browser_(browser),
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 277
276 layout->StartRow(0, kTextColumnSetId); 278 layout->StartRow(0, kTextColumnSetId);
277 layout->AddView(text_label); 279 layout->AddView(text_label);
278 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 280 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
279 281
280 layout->StartRow(0, kButtonColumnSetId); 282 layout->StartRow(0, kButtonColumnSetId);
281 layout->AddView(restore_button_); 283 layout->AddView(restore_button_);
282 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 284 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
283 285
284 // Metrics reporting option. 286 // Metrics reporting option.
285 if (offer_uma_optin_) 287 if (offer_uma_optin_) {
286 CreateUmaOptinView(layout); 288 CreateUmaOptinView(layout);
289 RecordBubbleHistogramValue(SESSION_CRASHED_BUBBLE_OPTIN_BAR_SHOWN);
290 }
287 291
288 set_margins(gfx::Insets()); 292 set_margins(gfx::Insets());
289 Layout(); 293 Layout();
290 } 294 }
291 295
292 void SessionCrashedBubbleView::CreateUmaOptinView(GridLayout* layout) { 296 void SessionCrashedBubbleView::CreateUmaOptinView(GridLayout* layout) {
293 // Checkbox for metric reporting setting. 297 // Checkbox for metric reporting setting.
294 // Since the text to the right of the checkbox can't be a simple string (needs 298 // Since the text to the right of the checkbox can't be a simple string (needs
295 // a hyperlink in it), this checkbox contains an empty string as its label, 299 // a hyperlink in it), this checkbox contains an empty string as its label,
296 // and the real text will be added as a separate view. 300 // and the real text will be added as a separate view.
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 GetWidget()->Close(); 433 GetWidget()->Close();
430 } 434 }
431 435
432 bool ShowSessionCrashedBubble(Browser* browser) { 436 bool ShowSessionCrashedBubble(Browser* browser) {
433 if (IsBubbleUIEnabled()) { 437 if (IsBubbleUIEnabled()) {
434 SessionCrashedBubbleView::Show(browser); 438 SessionCrashedBubbleView::Show(browser);
435 return true; 439 return true;
436 } 440 }
437 return false; 441 return false;
438 } 442 }
OLDNEW
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698