Author: s
...@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=...@chromium.org
Review URL: https://chromiumcodereview.appspot.com/11369253
TBR=s...@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_contr oller.cc
branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_contr oller.h
branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_contr oller_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_contr oller.cc
=========================================================================== ===
--- branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_contr oller.cc (original)
+++ branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_contr oller.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_contr oller.h
=========================================================================== ===
--- branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_contr oller.h (original)
+++ branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_contr oller.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_contr oller_mock.h
=========================================================================== ===
--- branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_contr oller_mock.h (original)
+++ branches/1312/src/chrome/browser/media_gallery/media_galleries_dialog_contr oller_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_browsertes t.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_browser test.mm',
'browser/ui/cocoa/intents/web_intent_picker_view_controller_browsertest.mm' ,
'browser/ui/find_bar/find_bar_host_browsertest.cc',