| Index: chrome/browser/web_applications/web_app_mac_unittest.mm | 
| diff --git a/chrome/browser/web_applications/web_app_mac_unittest.mm b/chrome/browser/web_applications/web_app_mac_unittest.mm | 
| index a6fee078044706f0bdf98fe15c1af68161998058..10b27debb1a05d1f2a0985f4c7ce77edfc338c04 100644 | 
| --- a/chrome/browser/web_applications/web_app_mac_unittest.mm | 
| +++ b/chrome/browser/web_applications/web_app_mac_unittest.mm | 
| @@ -8,6 +8,7 @@ | 
| #include <errno.h> | 
| #include <sys/xattr.h> | 
|  | 
| +#include "base/command_line.h" | 
| #include "base/file_util.h" | 
| #include "base/files/scoped_temp_dir.h" | 
| #include "base/mac/foundation_util.h" | 
| @@ -16,6 +17,7 @@ | 
| #include "base/strings/sys_string_conversions.h" | 
| #include "base/strings/utf_string_conversions.h" | 
| #include "chrome/common/chrome_paths.h" | 
| +#include "chrome/common/chrome_switches.h" | 
| #import "chrome/common/mac/app_mode_common.h" | 
| #include "grit/theme_resources.h" | 
| #include "testing/gmock/include/gmock/gmock.h" | 
| @@ -35,11 +37,17 @@ const char kFakeChromeBundleId[] = "fake.cfbundleidentifier"; | 
|  | 
| class WebAppShortcutCreatorMock : public web_app::WebAppShortcutCreator { | 
| public: | 
| -  explicit WebAppShortcutCreatorMock( | 
| -      const base::FilePath& app_data_dir, | 
| -      const web_app::ShortcutInfo& shortcut_info) | 
| +  WebAppShortcutCreatorMock(const base::FilePath& app_data_dir, | 
| +                            const web_app::ShortcutInfo& shortcut_info) | 
| : WebAppShortcutCreator(app_data_dir, | 
| -                              shortcut_info) { | 
| +                              shortcut_info, | 
| +                              extensions::FileHandlersInfo()) {} | 
| + | 
| +  WebAppShortcutCreatorMock( | 
| +      const base::FilePath& app_data_dir, | 
| +      const web_app::ShortcutInfo& shortcut_info, | 
| +      const extensions::FileHandlersInfo& file_handlers_info) | 
| +      : WebAppShortcutCreator(app_data_dir, shortcut_info, file_handlers_info) { | 
| } | 
|  | 
| MOCK_CONST_METHOD0(GetApplicationsDirname, base::FilePath()); | 
| @@ -290,4 +298,56 @@ TEST_F(WebAppShortcutCreatorTest, RevealAppShimInFinder) { | 
| SHORTCUT_CREATION_BY_USER, web_app::ShortcutLocations())); | 
| } | 
|  | 
| +TEST_F(WebAppShortcutCreatorTest, FileHandlers) { | 
| +  CommandLine::ForCurrentProcess()->AppendSwitch( | 
| +      switches::kEnableAppsFileAssociations); | 
| +  extensions::FileHandlersInfo file_handlers_info; | 
| +  extensions::FileHandlerInfo handler_0; | 
| +  handler_0.extensions.insert("ext0"); | 
| +  handler_0.extensions.insert("ext1"); | 
| +  handler_0.types.insert("type0"); | 
| +  handler_0.types.insert("type1"); | 
| +  file_handlers_info.handlers.push_back(handler_0); | 
| +  extensions::FileHandlerInfo handler_1; | 
| +  handler_1.extensions.insert("ext2"); | 
| +  handler_1.types.insert("type2"); | 
| +  file_handlers_info.handlers.push_back(handler_1); | 
| + | 
| +  NiceMock<WebAppShortcutCreatorMock> shortcut_creator( | 
| +      app_data_dir_, info_, file_handlers_info); | 
| +  EXPECT_CALL(shortcut_creator, GetApplicationsDirname()) | 
| +      .WillRepeatedly(Return(destination_dir_)); | 
| +  EXPECT_TRUE(shortcut_creator.CreateShortcuts( | 
| +      SHORTCUT_CREATION_AUTOMATED, web_app::ShortcutLocations())); | 
| + | 
| +  base::FilePath plist_path = | 
| +      shim_path_.Append("Contents").Append("Info.plist"); | 
| +  NSDictionary* plist = [NSDictionary | 
| +      dictionaryWithContentsOfFile:base::mac::FilePathToNSString(plist_path)]; | 
| +  NSArray* file_handlers = | 
| +      [plist objectForKey:app_mode::kCFBundleDocumentTypesKey]; | 
| + | 
| +  NSDictionary* file_handler_0 = [file_handlers objectAtIndex:0]; | 
| +  EXPECT_NSEQ(app_mode::kBundleTypeRoleViewer, | 
| +              [file_handler_0 objectForKey:app_mode::kCFBundleTypeRoleKey]); | 
| +  NSArray* file_handler_0_extensions = | 
| +      [file_handler_0 objectForKey:app_mode::kCFBundleTypeExtensionsKey]; | 
| +  EXPECT_TRUE([file_handler_0_extensions containsObject:@"ext0"]); | 
| +  EXPECT_TRUE([file_handler_0_extensions containsObject:@"ext1"]); | 
| +  NSArray* file_handler_0_types = | 
| +      [file_handler_0 objectForKey:app_mode::kCFBundleTypeMIMETypesKey]; | 
| +  EXPECT_TRUE([file_handler_0_types containsObject:@"type0"]); | 
| +  EXPECT_TRUE([file_handler_0_types containsObject:@"type1"]); | 
| + | 
| +  NSDictionary* file_handler_1 = [file_handlers objectAtIndex:1]; | 
| +  EXPECT_NSEQ(app_mode::kBundleTypeRoleViewer, | 
| +              [file_handler_1 objectForKey:app_mode::kCFBundleTypeRoleKey]); | 
| +  NSArray* file_handler_1_extensions = | 
| +      [file_handler_1 objectForKey:app_mode::kCFBundleTypeExtensionsKey]; | 
| +  EXPECT_TRUE([file_handler_1_extensions containsObject:@"ext2"]); | 
| +  NSArray* file_handler_1_types = | 
| +      [file_handler_1 objectForKey:app_mode::kCFBundleTypeMIMETypesKey]; | 
| +  EXPECT_TRUE([file_handler_1_types containsObject:@"type2"]); | 
| +} | 
| + | 
| }  // namespace web_app | 
|  |