1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/files/file_path.h" 6 #include "base/path_service.h" 7 #include "content/public/common/content_paths.h" 8 #include "content/shell/browser/shell_browser_context.h" 9 #include "ui/views_content_client/views_content_client.h" 10 #include "ui/views_content_client/views_content_client_main_parts.h" 11 12 namespace ui { 13 14 namespace { 15 16 class ViewsContentClientMainPartsMac : public ViewsContentClientMainParts { 17 public: 18 ViewsContentClientMainPartsMac( 19 const content::MainFunctionParams& content_params, 20 ViewsContentClient* views_content_client); 21 virtual ~ViewsContentClientMainPartsMac() {} 22 23 // content::BrowserMainParts: 24 virtual void PreMainMessageLoopRun() OVERRIDE; 25 26 private: 27 DISALLOW_COPY_AND_ASSIGN(ViewsContentClientMainPartsMac); 28 }; 29 30 ViewsContentClientMainPartsMac::ViewsContentClientMainPartsMac( 31 const content::MainFunctionParams& content_params, 32 ViewsContentClient* views_content_client) 33 : ViewsContentClientMainParts(content_params, views_content_client) { 34 // Cache the child process path to avoid triggering an AssertIOAllowed. 35 base::FilePath child_process_exe; 36 PathService::Get(content::CHILD_PROCESS_EXE, &child_process_exe); 37 } 38 39 void ViewsContentClientMainPartsMac::PreMainMessageLoopRun() { 40 ViewsContentClientMainParts::PreMainMessageLoopRun(); 41 42 views_content_client()->task().Run(browser_context(), NULL); 43 } 44 45 } // namespace 46 47 // static 48 ViewsContentClientMainParts* ViewsContentClientMainParts::Create( 49 const content::MainFunctionParams& content_params, 50 ViewsContentClient* views_content_client) { 51 return 52 new ViewsContentClientMainPartsMac(content_params, views_content_client); 53 } 54 55 } // namespace ui 56