Author:
sa...@chromium.org
Date: Thu Nov 15 13:50:52 2012
New Revision: 168043
Log:
Merge 167819 - Fix crash when programatically closing media gallery dialog
If the media gallery dialog was closed by something other than clicking "Cancel" or "Ok" then Chrome would crash.
The problem was that a bug in the way that I was closing the dialog. I was doing endSheet:alert when I should be doing endSheet:[alert window].
BUG=156537
TBR=
b...@chromium.org
Review URL:
https://chromiumcodereview.appspot.com/11369253
TBR=
sa...@chromium.org
Review URL:
https://codereview.chromium.org/11308053
Added:
branches/1312/src/chrome/browser/ui/cocoa/extensions/
media_galleries_dialog_cocoa_browsertest.mm
- copied unchanged from r167819, /trunk/src/chrome/browser/ui/cocoa/extensions/
media_galleries_dialog_cocoa_browsertest.mm
Modified:
branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_controller.cc
branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_controller.h
branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_controller_mock.h
branches/1312/src/chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa.h
branches/1312/src/chrome/browser/ui/cocoa/extensions/
media_galleries_dialog_cocoa.mm
branches/1312/src/chrome/chrome_tests.gypi
Modified: branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_controller.cc
==============================================================================
--- branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_controller.cc (original)
+++ branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_controller.cc Thu Nov 15 13:50:52 2012
@@ -116,6 +116,10 @@
return known_galleries_;
}
+content::WebContents* MediaGalleriesDialogController::web_contents() const {
+ return web_contents_;
+}
+
void MediaGalleriesDialogController::FileSelected(const FilePath& path,
int index,
void* params) {
Modified: branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_controller.h
==============================================================================
--- branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_controller.h (original)
+++ branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_controller.h Thu Nov 15 13:50:52 2012
@@ -76,14 +76,12 @@
bool enabled);
virtual void DialogFinished(bool accepted);
virtual const KnownGalleryPermissions& permissions() const;
+ virtual content::WebContents* web_contents() const;
// SelectFileDialog::Listener implementation:
virtual void FileSelected(const FilePath& path,
int index,
void* params) OVERRIDE;
- content::WebContents* web_contents() const {
- return web_contents_;
- }
protected:
// For use with tests.
Modified: branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_controller_mock.h
==============================================================================
--- branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_controller_mock.h (original)
+++ branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_controller_mock.h Thu Nov 15 13:50:52 2012
@@ -20,10 +20,12 @@
MOCK_CONST_METHOD0(GetSubtext, string16());
MOCK_CONST_METHOD0(HasPermittedGalleries, bool());
MOCK_CONST_METHOD0(permissions, const KnownGalleryPermissions&());
+ MOCK_CONST_METHOD0(web_contents, content::WebContents*());
MOCK_METHOD0(OnAddFolderClicked, void());
MOCK_METHOD2(DidToggleGallery, void(const MediaGalleryPrefInfo* pref_info,
bool enabled));
+ MOCK_METHOD1(DialogFinished, void(bool));
};
} // namespace
Modified: branches/1312/src/chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa.h
==============================================================================
--- branches/1312/src/chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa.h (original)
+++ branches/1312/src/chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa.h Thu Nov 15 13:50:52 2012
@@ -15,6 +15,7 @@
namespace chrome {
+class MediaGalleriesDialogBrowserTest;
class MediaGalleriesDialogTest;
// This class displays an alert that can be used to grant permission for
@@ -43,6 +44,7 @@
virtual void DeleteDelegate() OVERRIDE;
private:
+ FRIEND_TEST_ALL_PREFIXES(MediaGalleriesDialogBrowserTest, Close);
FRIEND_TEST_ALL_PREFIXES(MediaGalleriesDialogTest, InitializeCheckboxes);
FRIEND_TEST_ALL_PREFIXES(MediaGalleriesDialogTest, ToggleCheckboxes);
FRIEND_TEST_ALL_PREFIXES(MediaGalleriesDialogTest, UpdateAdds);
Modified: branches/1312/src/chrome/browser/ui/cocoa/extensions/
media_galleries_dialog_cocoa.mm
==============================================================================
--- branches/1312/src/chrome/browser/ui/cocoa/extensions/
media_galleries_dialog_cocoa.mm (original)
+++ branches/1312/src/chrome/browser/ui/cocoa/extensions/
media_galleries_dialog_cocoa.mm Thu Nov 15 13:50:52 2012
@@ -134,6 +134,8 @@
if (window_)
window_->CloseConstrainedWindow();
break;
+ case NSRunStoppedResponse:
+ break;
default:
NOTREACHED();
break;
@@ -205,7 +207,7 @@
// As required by ConstrainedWindowMacDelegate, close the sheet if
// it's still open.
if (is_sheet_open())
- [NSApp endSheet:sheet()];
+ [NSApp endSheet:[alert_ window]];
controller_->DialogFinished(accepted_);
}
Modified: branches/1312/src/chrome/chrome_tests.gypi
==============================================================================
--- branches/1312/src/chrome/chrome_tests.gypi (original)
+++ branches/1312/src/chrome/chrome_tests.gypi Thu Nov 15 13:50:52 2012
@@ -3083,6 +3083,8 @@
'browser/loadtimes_extension_bindings_browsertest.cc',
'browser/locale_tests_browsertest.cc',
'browser/logging_chrome_browsertest.cc',
+ 'browser/media_gallery/media_galleries_dialog_controller_mock.cc',
+ 'browser/media_gallery/media_galleries_dialog_controller_mock.h',
'browser/metrics/metrics_service_browsertest.cc',
'browser/net/cookie_policy_browsertest.cc',
'browser/net/ftp_browsertest.cc',
@@ -3161,6 +3163,7 @@
'browser/ui/cocoa/extensions/
extension_install_dialog_controller_browsertest.mm',
'browser/ui/cocoa/extensions/extension_install_prompt_test_utils.h',
'browser/ui/cocoa/extensions/
extension_install_prompt_test_utils.mm',
+ 'browser/ui/cocoa/extensions/
media_galleries_dialog_cocoa_browsertest.mm',
'browser/ui/cocoa/intents/
web_intent_inline_service_view_controller_browsertest.mm',
'browser/ui/cocoa/intents/
web_intent_picker_view_controller_browsertest.mm',
'browser/ui/find_bar/find_bar_host_browsertest.cc',