summaryrefslogtreecommitdiffstats
path: root/ui/views_content_client
diff options
context:
space:
mode:
authortapted@chromium.org <tapted@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-04 11:29:03 +0000
committertapted@chromium.org <tapted@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-04 11:29:03 +0000
commit724efd8b4cec9db11a53ff2f7cead7aff211835a (patch)
treec1de6393b58fdd164a60f2251cfc90b273e2ad99 /ui/views_content_client
parent21b6636c8fae9e12e7b0917f2d6eefefeb42e83d (diff)
downloadchromium_src-724efd8b4cec9db11a53ff2f7cead7aff211835a.zip
chromium_src-724efd8b4cec9db11a53ff2f7cead7aff211835a.tar.gz
chromium_src-724efd8b4cec9db11a53ff2f7cead7aff211835a.tar.bz2
MacViews: Gets views_examples_with_content_exe compiling on Mac
This splits views_content_client_main_parts_* into versions for ChromeOS, Mac and Desktop Aura, with a per-platform Create(..) function. ChromeOS and Desktop Aura sharing a common Aura part. desktop_test_views_delegate.cc is moved to an _aura version, and a _mac version added. views_content_client now loads content_resources.pak to access sandbox profiles required for mac. A macviews_builder target is added to expose views_examples_with_content_exe on Mac, and to give the fyi trybot something to build. BUG=366007 Review URL: https://codereview.chromium.org/297143009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@274775 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/views_content_client')
-rw-r--r--ui/views_content_client/views_content_browser_client.cc2
-rw-r--r--ui/views_content_client/views_content_client.gyp18
-rw-r--r--ui/views_content_client/views_content_client_main_parts.cc49
-rw-r--r--ui/views_content_client/views_content_client_main_parts.h26
-rw-r--r--ui/views_content_client/views_content_client_main_parts_aura.cc33
-rw-r--r--ui/views_content_client/views_content_client_main_parts_aura.h37
-rw-r--r--ui/views_content_client/views_content_client_main_parts_chromeos.cc75
-rw-r--r--ui/views_content_client/views_content_client_main_parts_desktop_aura.cc57
-rw-r--r--ui/views_content_client/views_content_client_main_parts_mac.mm55
-rw-r--r--ui/views_content_client/views_content_main_delegate.cc7
10 files changed, 294 insertions, 65 deletions
diff --git a/ui/views_content_client/views_content_browser_client.cc b/ui/views_content_client/views_content_browser_client.cc
index c886506..4bc3786 100644
--- a/ui/views_content_client/views_content_browser_client.cc
+++ b/ui/views_content_client/views_content_browser_client.cc
@@ -21,7 +21,7 @@ ViewsContentBrowserClient::~ViewsContentBrowserClient() {
content::BrowserMainParts* ViewsContentBrowserClient::CreateBrowserMainParts(
const content::MainFunctionParams& parameters) {
views_content_main_parts_ =
- new ViewsContentClientMainParts(parameters, views_content_client_);
+ ViewsContentClientMainParts::Create(parameters, views_content_client_);
return views_content_main_parts_;
}
diff --git a/ui/views_content_client/views_content_client.gyp b/ui/views_content_client/views_content_client.gyp
index 100504b..1773c2a 100644
--- a/ui/views_content_client/views_content_client.gyp
+++ b/ui/views_content_client/views_content_client.gyp
@@ -16,7 +16,6 @@
'../../content/content_shell_and_tests.gyp:content_shell_lib',
'../../third_party/icu/icu.gyp:icui18n',
'../../third_party/icu/icu.gyp:icuuc',
- '../aura/aura.gyp:aura',
'../base/ui_base.gyp:ui_base',
'../events/events.gyp:events',
'../gfx/gfx.gyp:gfx',
@@ -37,8 +36,25 @@
'views_content_client_export.h',
'views_content_client_main_parts.cc',
'views_content_client_main_parts.h',
+ 'views_content_client_main_parts_aura.cc',
+ 'views_content_client_main_parts_aura.h',
+ 'views_content_client_main_parts_chromeos.cc',
+ 'views_content_client_main_parts_desktop_aura.cc',
+ 'views_content_client_main_parts_mac.mm',
'views_content_main_delegate.cc',
],
+ 'conditions': [
+ ['use_aura==1', {
+ 'dependencies': [
+ '../aura/aura.gyp:aura',
+ ],
+ }], # use_aura==1
+ ['chromeos==1', {
+ 'sources!': [
+ 'views_content_client_main_parts_desktop_aura.cc',
+ ]
+ }], # chromeos==1
+ ],
}, # target_name: views_content_client
],
}
diff --git a/ui/views_content_client/views_content_client_main_parts.cc b/ui/views_content_client/views_content_client_main_parts.cc
index 00ffc49..d51ceb2 100644
--- a/ui/views_content_client/views_content_client_main_parts.cc
+++ b/ui/views_content_client/views_content_client_main_parts.cc
@@ -4,32 +4,10 @@
#include "ui/views_content_client/views_content_client_main_parts.h"
-#include "base/bind.h"
-#include "base/command_line.h"
-#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/threading/thread.h"
-#include "base/threading/thread_restrictions.h"
-#include "content/public/browser/context_factory.h"
-#include "content/public/common/content_switches.h"
#include "content/shell/browser/shell_browser_context.h"
-#include "ui/aura/env.h"
#include "ui/base/ime/input_method_initializer.h"
-#include "ui/gfx/screen.h"
#include "ui/views/test/desktop_test_views_delegate.h"
-#include "ui/views/widget/native_widget_aura.h"
-#include "ui/views_content_client/views_content_client.h"
-#include "ui/wm/core/wm_state.h"
-
-#if defined(OS_CHROMEOS)
-#include "ui/aura/test/test_screen.h"
-#include "ui/aura/window.h"
-#include "ui/aura/window_event_dispatcher.h"
-#include "ui/wm/test/wm_test_helper.h"
-#else // !defined(OS_CHROMEOS)
-#include "ui/views/widget/desktop_aura/desktop_screen.h"
-#endif
namespace ui {
@@ -42,42 +20,15 @@ ViewsContentClientMainParts::ViewsContentClientMainParts(
ViewsContentClientMainParts::~ViewsContentClientMainParts() {
}
-void ViewsContentClientMainParts::ToolkitInitialized() {
- wm_state_.reset(new ::wm::WMState);
-}
-
void ViewsContentClientMainParts::PreMainMessageLoopRun() {
ui::InitializeInputMethodForTesting();
browser_context_.reset(new content::ShellBrowserContext(false, NULL));
-
- gfx::NativeView window_context = NULL;
-#if defined(OS_CHROMEOS)
- gfx::Screen::SetScreenInstance(
- gfx::SCREEN_TYPE_NATIVE, aura::TestScreen::Create());
- // Set up basic pieces of views::corewm.
- wm_test_helper_.reset(new ::wm::WMTestHelper(gfx::Size(800, 600),
- content::GetContextFactory()));
- // Ensure the X window gets mapped.
- wm_test_helper_->host()->Show();
- // Ensure Aura knows where to open new windows.
- window_context = wm_test_helper_->host()->window();
-#else
- aura::Env::CreateInstance(true);
- gfx::Screen::SetScreenInstance(
- gfx::SCREEN_TYPE_NATIVE, views::CreateDesktopScreen());
-#endif
views_delegate_.reset(new views::DesktopTestViewsDelegate);
-
- views_content_client_->task().Run(browser_context_.get(), window_context);
}
void ViewsContentClientMainParts::PostMainMessageLoopRun() {
browser_context_.reset();
-#if defined(OS_CHROMEOS)
- wm_test_helper_.reset();
-#endif
views_delegate_.reset();
- aura::Env::DeleteInstance();
}
bool ViewsContentClientMainParts::MainMessageLoopRun(int* result_code) {
diff --git a/ui/views_content_client/views_content_client_main_parts.h b/ui/views_content_client/views_content_client_main_parts.h
index bfaf091..113e352 100644
--- a/ui/views_content_client/views_content_client_main_parts.h
+++ b/ui/views_content_client/views_content_client_main_parts.h
@@ -18,24 +18,20 @@ namespace views {
class ViewsDelegate;
}
-namespace wm {
-class WMState;
-class WMTestHelper;
-}
-
namespace ui {
class ViewsContentClient;
class ViewsContentClientMainParts : public content::BrowserMainParts {
public:
- ViewsContentClientMainParts(
+ // Platform-specific create function.
+ static ViewsContentClientMainParts* Create(
const content::MainFunctionParams& content_params,
ViewsContentClient* views_content_client);
+
virtual ~ViewsContentClientMainParts();
// content::BrowserMainParts:
- virtual void ToolkitInitialized() OVERRIDE;
virtual void PreMainMessageLoopRun() OVERRIDE;
virtual bool MainMessageLoopRun(int* result_code) OVERRIDE;
virtual void PostMainMessageLoopRun() OVERRIDE;
@@ -44,18 +40,20 @@ class ViewsContentClientMainParts : public content::BrowserMainParts {
return browser_context_.get();
}
+ ViewsContentClient* views_content_client() {
+ return views_content_client_;
+ }
+
+ protected:
+ ViewsContentClientMainParts(
+ const content::MainFunctionParams& content_params,
+ ViewsContentClient* views_content_client);
+
private:
scoped_ptr<content::ShellBrowserContext> browser_context_;
scoped_ptr<views::ViewsDelegate> views_delegate_;
-#if defined(OS_CHROMEOS)
- // Enable a minimal set of views::corewm to be initialized.
- scoped_ptr<wm::WMTestHelper> wm_test_helper_;
-#endif
-
- scoped_ptr<wm::WMState> wm_state_;
-
ViewsContentClient* views_content_client_;
DISALLOW_COPY_AND_ASSIGN(ViewsContentClientMainParts);
diff --git a/ui/views_content_client/views_content_client_main_parts_aura.cc b/ui/views_content_client/views_content_client_main_parts_aura.cc
new file mode 100644
index 0000000..5e1c69a
--- /dev/null
+++ b/ui/views_content_client/views_content_client_main_parts_aura.cc
@@ -0,0 +1,33 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/views_content_client/views_content_client_main_parts_aura.h"
+
+#include "ui/aura/env.h"
+#include "ui/wm/core/wm_state.h"
+
+namespace ui {
+
+ViewsContentClientMainPartsAura::ViewsContentClientMainPartsAura(
+ const content::MainFunctionParams& content_params,
+ ViewsContentClient* views_content_client)
+ : ViewsContentClientMainParts(content_params, views_content_client) {
+}
+
+ViewsContentClientMainPartsAura::~ViewsContentClientMainPartsAura() {
+}
+
+void ViewsContentClientMainPartsAura::ToolkitInitialized() {
+ ViewsContentClientMainParts::ToolkitInitialized();
+
+ wm_state_.reset(new ::wm::WMState);
+}
+
+void ViewsContentClientMainPartsAura::PostMainMessageLoopRun() {
+ aura::Env::DeleteInstance();
+
+ ViewsContentClientMainParts::PostMainMessageLoopRun();
+}
+
+} // namespace ui
diff --git a/ui/views_content_client/views_content_client_main_parts_aura.h b/ui/views_content_client/views_content_client_main_parts_aura.h
new file mode 100644
index 0000000..06b273a
--- /dev/null
+++ b/ui/views_content_client/views_content_client_main_parts_aura.h
@@ -0,0 +1,37 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_VIEWS_CONTENT_CLIENT_VIEWS_CONTENT_CLIENT_MAIN_PARTS_AURA_H_
+#define UI_VIEWS_CONTENT_CLIENT_VIEWS_CONTENT_CLIENT_MAIN_PARTS_AURA_H_
+
+#include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
+#include "ui/views_content_client/views_content_client_main_parts.h"
+
+namespace wm {
+class WMState;
+}
+
+namespace ui {
+
+class ViewsContentClientMainPartsAura : public ViewsContentClientMainParts {
+ protected:
+ ViewsContentClientMainPartsAura(
+ const content::MainFunctionParams& content_params,
+ ViewsContentClient* views_content_client);
+ virtual ~ViewsContentClientMainPartsAura();
+
+ // content::BrowserMainParts:
+ virtual void ToolkitInitialized() OVERRIDE;
+ virtual void PostMainMessageLoopRun() OVERRIDE;
+
+ private:
+ scoped_ptr< ::wm::WMState> wm_state_;
+
+ DISALLOW_COPY_AND_ASSIGN(ViewsContentClientMainPartsAura);
+};
+
+} // namespace ui
+
+#endif // UI_VIEWS_CONTENT_CLIENT_VIEWS_CONTENT_CLIENT_MAIN_PARTS_AURA_H_
diff --git a/ui/views_content_client/views_content_client_main_parts_chromeos.cc b/ui/views_content_client/views_content_client_main_parts_chromeos.cc
new file mode 100644
index 0000000..034cba9
--- /dev/null
+++ b/ui/views_content_client/views_content_client_main_parts_chromeos.cc
@@ -0,0 +1,75 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/public/browser/context_factory.h"
+#include "content/shell/browser/shell_browser_context.h"
+#include "ui/aura/test/test_screen.h"
+#include "ui/aura/window.h"
+#include "ui/gfx/screen.h"
+#include "ui/views_content_client/views_content_client.h"
+#include "ui/views_content_client/views_content_client_main_parts_aura.h"
+#include "ui/wm/test/wm_test_helper.h"
+
+namespace ui {
+
+namespace {
+
+class ViewsContentClientMainPartsChromeOS
+ : public ViewsContentClientMainPartsAura {
+ public:
+ ViewsContentClientMainPartsChromeOS(
+ const content::MainFunctionParams& content_params,
+ ViewsContentClient* views_content_client);
+ virtual ~ViewsContentClientMainPartsChromeOS() {}
+
+ // content::BrowserMainParts:
+ virtual void PreMainMessageLoopRun() OVERRIDE;
+ virtual void PostMainMessageLoopRun() OVERRIDE;
+
+ private:
+ // Enable a minimal set of views::corewm to be initialized.
+ scoped_ptr< ::wm::WMTestHelper> wm_test_helper_;
+
+ DISALLOW_COPY_AND_ASSIGN(ViewsContentClientMainPartsChromeOS);
+};
+
+ViewsContentClientMainPartsChromeOS::ViewsContentClientMainPartsChromeOS(
+ const content::MainFunctionParams& content_params,
+ ViewsContentClient* views_content_client)
+ : ViewsContentClientMainPartsAura(content_params, views_content_client) {
+}
+
+void ViewsContentClientMainPartsChromeOS::PreMainMessageLoopRun() {
+ ViewsContentClientMainPartsAura::PreMainMessageLoopRun();
+
+ gfx::Screen::SetScreenInstance(
+ gfx::SCREEN_TYPE_NATIVE, aura::TestScreen::Create());
+ // Set up basic pieces of views::corewm.
+ wm_test_helper_.reset(new ::wm::WMTestHelper(gfx::Size(800, 600),
+ content::GetContextFactory()));
+ // Ensure the X window gets mapped.
+ wm_test_helper_->host()->Show();
+
+ // Ensure Aura knows where to open new windows.
+ views_content_client()->task().Run(browser_context(),
+ wm_test_helper_->host()->window());
+}
+
+void ViewsContentClientMainPartsChromeOS::PostMainMessageLoopRun() {
+ wm_test_helper_.reset();
+
+ ViewsContentClientMainPartsAura::PostMainMessageLoopRun();
+}
+
+} // namespace
+
+// static
+ViewsContentClientMainParts* ViewsContentClientMainParts::Create(
+ const content::MainFunctionParams& content_params,
+ ViewsContentClient* views_content_client) {
+ return new ViewsContentClientMainPartsChromeOS(
+ content_params, views_content_client);
+}
+
+} // namespace ui
diff --git a/ui/views_content_client/views_content_client_main_parts_desktop_aura.cc b/ui/views_content_client/views_content_client_main_parts_desktop_aura.cc
new file mode 100644
index 0000000..ec8b75b
--- /dev/null
+++ b/ui/views_content_client/views_content_client_main_parts_desktop_aura.cc
@@ -0,0 +1,57 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/shell/browser/shell_browser_context.h"
+#include "ui/aura/env.h"
+#include "ui/gfx/screen.h"
+#include "ui/views/widget/desktop_aura/desktop_screen.h"
+#include "ui/views_content_client/views_content_client.h"
+#include "ui/views_content_client/views_content_client_main_parts_aura.h"
+
+namespace ui {
+
+namespace {
+
+class ViewsContentClientMainPartsDesktopAura
+ : public ViewsContentClientMainPartsAura {
+ public:
+ ViewsContentClientMainPartsDesktopAura(
+ const content::MainFunctionParams& content_params,
+ ViewsContentClient* views_content_client);
+ virtual ~ViewsContentClientMainPartsDesktopAura() {}
+
+ // content::BrowserMainParts:
+ virtual void PreMainMessageLoopRun() OVERRIDE;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ViewsContentClientMainPartsDesktopAura);
+};
+
+ViewsContentClientMainPartsDesktopAura::ViewsContentClientMainPartsDesktopAura(
+ const content::MainFunctionParams& content_params,
+ ViewsContentClient* views_content_client)
+ : ViewsContentClientMainPartsAura(content_params, views_content_client) {
+}
+
+void ViewsContentClientMainPartsDesktopAura::PreMainMessageLoopRun() {
+ ViewsContentClientMainPartsAura::PreMainMessageLoopRun();
+
+ aura::Env::CreateInstance(true);
+ gfx::Screen::SetScreenInstance(
+ gfx::SCREEN_TYPE_NATIVE, views::CreateDesktopScreen());
+
+ views_content_client()->task().Run(browser_context(), NULL);
+}
+
+} // namespace
+
+// static
+ViewsContentClientMainParts* ViewsContentClientMainParts::Create(
+ const content::MainFunctionParams& content_params,
+ ViewsContentClient* views_content_client) {
+ return new ViewsContentClientMainPartsDesktopAura(
+ content_params, views_content_client);
+}
+
+} // namespace ui
diff --git a/ui/views_content_client/views_content_client_main_parts_mac.mm b/ui/views_content_client/views_content_client_main_parts_mac.mm
new file mode 100644
index 0000000..8d2f12b
--- /dev/null
+++ b/ui/views_content_client/views_content_client_main_parts_mac.mm
@@ -0,0 +1,55 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/files/file_path.h"
+#include "base/path_service.h"
+#include "content/public/common/content_paths.h"
+#include "content/shell/browser/shell_browser_context.h"
+#include "ui/views_content_client/views_content_client.h"
+#include "ui/views_content_client/views_content_client_main_parts.h"
+
+namespace ui {
+
+namespace {
+
+class ViewsContentClientMainPartsMac : public ViewsContentClientMainParts {
+ public:
+ ViewsContentClientMainPartsMac(
+ const content::MainFunctionParams& content_params,
+ ViewsContentClient* views_content_client);
+ virtual ~ViewsContentClientMainPartsMac() {}
+
+ // content::BrowserMainParts:
+ virtual void PreMainMessageLoopRun() OVERRIDE;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ViewsContentClientMainPartsMac);
+};
+
+ViewsContentClientMainPartsMac::ViewsContentClientMainPartsMac(
+ const content::MainFunctionParams& content_params,
+ ViewsContentClient* views_content_client)
+ : ViewsContentClientMainParts(content_params, views_content_client) {
+ // Cache the child process path to avoid triggering an AssertIOAllowed.
+ base::FilePath child_process_exe;
+ PathService::Get(content::CHILD_PROCESS_EXE, &child_process_exe);
+}
+
+void ViewsContentClientMainPartsMac::PreMainMessageLoopRun() {
+ ViewsContentClientMainParts::PreMainMessageLoopRun();
+
+ views_content_client()->task().Run(browser_context(), NULL);
+}
+
+} // namespace
+
+// static
+ViewsContentClientMainParts* ViewsContentClientMainParts::Create(
+ const content::MainFunctionParams& content_params,
+ ViewsContentClient* views_content_client) {
+ return
+ new ViewsContentClientMainPartsMac(content_params, views_content_client);
+}
+
+} // namespace ui
diff --git a/ui/views_content_client/views_content_main_delegate.cc b/ui/views_content_client/views_content_main_delegate.cc
index a97c812..1fb3a69 100644
--- a/ui/views_content_client/views_content_main_delegate.cc
+++ b/ui/views_content_client/views_content_main_delegate.cc
@@ -61,6 +61,13 @@ void ViewsContentMainDelegate::PreSandboxStartup() {
base::FilePath ui_test_pak_path;
DCHECK(PathService::Get(ui::UI_TEST_PAK, &ui_test_pak_path));
ui::ResourceBundle::InitSharedInstanceWithPakPath(ui_test_pak_path);
+
+ // Load content resources to provide, e.g., sandbox configuration data on Mac.
+ base::FilePath content_resources_pak_path;
+ PathService::Get(base::DIR_MODULE, &content_resources_pak_path);
+ ui::ResourceBundle::GetSharedInstance().AddDataPackFromPath(
+ content_resources_pak_path.AppendASCII("content_resources.pak"),
+ ui::SCALE_FACTOR_100P);
}
content::ContentBrowserClient*