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

Side by Side Diff: chrome/browser/plugins/plugin_infobar_delegates.cc

Issue 11032052: Merge 160403 - Fix crash when a download is requested for an outdated plugin. (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1287/src/
Patch Set: Created 8 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/plugins/plugin_installer.h » ('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 (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/plugins/plugin_infobar_delegates.h" 5 #include "chrome/browser/plugins/plugin_infobar_delegates.h"
6 6
7 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "chrome/browser/api/infobars/infobar_service.h" 8 #include "chrome/browser/api/infobars/infobar_service.h"
9 #include "chrome/browser/content_settings/host_content_settings_map.h" 9 #include "chrome/browser/content_settings/host_content_settings_map.h"
10 #include "chrome/browser/google/google_util.h" 10 #include "chrome/browser/google/google_util.h"
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 } 226 }
227 227
228 bool OutdatedPluginInfoBarDelegate::Accept() { 228 bool OutdatedPluginInfoBarDelegate::Accept() {
229 content::RecordAction(UserMetricsAction("OutdatedPluginInfobar.Update")); 229 content::RecordAction(UserMetricsAction("OutdatedPluginInfobar.Update"));
230 if (installer()->state() != PluginInstaller::INSTALLER_STATE_IDLE) { 230 if (installer()->state() != PluginInstaller::INSTALLER_STATE_IDLE) {
231 NOTREACHED(); 231 NOTREACHED();
232 return false; 232 return false;
233 } 233 }
234 234
235 content::WebContents* web_contents = owner()->GetWebContents(); 235 content::WebContents* web_contents = owner()->GetWebContents();
236 // A call to any of |OpenDownloadURL()| or |StartInstalling()| will
237 // result in deleting ourselves. Accordingly, we make sure to
238 // not pass a reference to an object that can go away.
239 // http://crbug.com/54167
240 GURL plugin_url(plugin_metadata_->plugin_url());
236 if (plugin_metadata_->url_for_display()) { 241 if (plugin_metadata_->url_for_display()) {
237 installer()->OpenDownloadURL(plugin_metadata_->url_for_display(), 242 installer()->OpenDownloadURL(plugin_url, web_contents);
238 plugin_metadata_->plugin_url(),
239 web_contents);
240 } else { 243 } else {
241 installer()->StartInstalling( 244 installer()->StartInstalling(plugin_url,
242 plugin_metadata_->url_for_display(), 245 TabContents::FromWebContents(web_contents));
243 plugin_metadata_->plugin_url(),
244 TabContents::FromWebContents(web_contents));
245 } 246 }
246 return false; 247 return false;
247 } 248 }
248 249
249 bool OutdatedPluginInfoBarDelegate::Cancel() { 250 bool OutdatedPluginInfoBarDelegate::Cancel() {
250 content::RecordAction( 251 content::RecordAction(
251 UserMetricsAction("OutdatedPluginInfobar.AllowThisTime")); 252 UserMetricsAction("OutdatedPluginInfobar.AllowThisTime"));
252 LoadBlockedPlugins(); 253 LoadBlockedPlugins();
253 return true; 254 return true;
254 } 255 }
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 "https://support.google.com/chrome/?ib_display_in_desktop")); 497 "https://support.google.com/chrome/?ib_display_in_desktop"));
497 OpenURLParams params( 498 OpenURLParams params(
498 url, Referrer(), 499 url, Referrer(),
499 (disposition == CURRENT_TAB) ? NEW_FOREGROUND_TAB : disposition, 500 (disposition == CURRENT_TAB) ? NEW_FOREGROUND_TAB : disposition,
500 content::PAGE_TRANSITION_LINK, false); 501 content::PAGE_TRANSITION_LINK, false);
501 owner()->GetWebContents()->OpenURL(params); 502 owner()->GetWebContents()->OpenURL(params);
502 return false; 503 return false;
503 } 504 }
504 #endif // defined(OS_WIN) 505 #endif // defined(OS_WIN)
505 #endif // defined(ENABLE_PLUGIN_INSTALLATION) 506 #endif // defined(ENABLE_PLUGIN_INSTALLATION)
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/plugins/plugin_installer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698