CrOS - Refactor file picker closing to avoid race conditions.

* Move ExtensionDialogObserver to separate header to reduce #include burden on clients of FileManagerDialog.
* Move file picker callback registry logic into FileManagerDialog, which is the owner of the listener pointers.
* Change fileBrowserPrivate.{selectFile,selectFiles,cancel} to immediately close the dialog window.  Talked to mpcomplete@ about this, he thinks it's OK to tear it down in the middle of a function call.  If this causes problems we can add a callback parameter to those functions and use it to call window.close().
* Added FileManagerDialogTest.SelectFileAndOpen to test picking a file.

BUG=chromium-os:16607
TEST=browser_tests FileManagerDialogTest.*

Review URL: http://codereview.chromium.org/7201007

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89920 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 107d2c4..5068cab 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -3053,6 +3053,8 @@
         'browser/ui/views/extensions/browser_action_drag_data.h',
         'browser/ui/views/extensions/browser_action_overflow_menu_controller.cc',
         'browser/ui/views/extensions/browser_action_overflow_menu_controller.h',
+        'browser/ui/views/extensions/extension_dialog_observer.cc',
+        'browser/ui/views/extensions/extension_dialog_observer.h',
         'browser/ui/views/extensions/extension_dialog.cc',
         'browser/ui/views/extensions/extension_dialog.h',
         'browser/ui/views/extensions/extension_install_dialog_view.cc',
@@ -4164,6 +4166,8 @@
                 ['include', '^browser/ui/views/extensions/browser_action_drag_data.h'],
                 ['include', '^browser/ui/views/extensions/browser_action_overflow_menu_controller.cc'],
                 ['include', '^browser/ui/views/extensions/browser_action_overflow_menu_controller.h'],
+                ['include', '^browser/ui/views/extensions/extension_dialog_observer.cc'],
+                ['include', '^browser/ui/views/extensions/extension_dialog_observer.h'],
                 ['include', '^browser/ui/views/extensions/extension_dialog.cc'],
                 ['include', '^browser/ui/views/extensions/extension_dialog.h'],
                 ['include', '^browser/ui/views/extensions/extension_install_dialog_view.cc'],