diff options
author | erg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-22 20:50:36 +0000 |
---|---|---|
committer | erg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-22 20:50:36 +0000 |
commit | 2a2caa0c24fb2adb2a889d24c85f120f55efac52 (patch) | |
tree | 40f6803189fb0bbdb7af69c114377b8ae448d99b /content/shell/minimal_ash.h | |
parent | f47621b16b748a2cb828e2f28b39f717c48ab65d (diff) | |
download | chromium_src-2a2caa0c24fb2adb2a889d24c85f120f55efac52.zip chromium_src-2a2caa0c24fb2adb2a889d24c85f120f55efac52.tar.gz chromium_src-2a2caa0c24fb2adb2a889d24c85f120f55efac52.tar.bz2 |
Finally rip the global StackingClient bandaid off.
- Removes the aura::client::SetStackingClient(StackingClient*) interface.
- Moves the ash StackingController from a singleton owned by ash::Shell to one StackingController per RootWindow owned by the ash::RootWindowController. (Also removes a spurious delegate method, where every implementation creates the same object, including tests.)
- Removes the global DesktopStackingClient and related interfaces.
- Fix the ChromeViewsDelegate so that it still sets context in chromeos builds.
- Rename content::ShellStackingClientAsh to content::MinimalAsh to reflect what it really does.
In addition, the following fix ups apply:
- Previously, WebContentsViewAura asserted that it needed a context window. Now if no context window is provided, it isn't added to an aura hierarchy. There are times when that context doesn't exist: various chromeos dialogs that directly invoke WebView and toplevel extension/app windows that are created from background pages that don't have contexts.
- Because of that, added a few of NULL checking to RenderWidgetHostViewAura. (Other methods NULL checked Window::GetRootWindow(), but there were a few that didn't and relied on the old NULL means lookup in the StackingClient behaviour.)
BUG=161882
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=177182
Review URL: https://codereview.chromium.org/11829040
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@178083 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/shell/minimal_ash.h')
-rw-r--r-- | content/shell/minimal_ash.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/content/shell/minimal_ash.h b/content/shell/minimal_ash.h new file mode 100644 index 0000000..f3ec43b --- /dev/null +++ b/content/shell/minimal_ash.h @@ -0,0 +1,66 @@ +// Copyright (c) 2012 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 CONTENT_SHELL_MINIMAL_ASH_H_ +#define CONTENT_SHELL_MINIMAL_ASH_H_ + +#include "base/compiler_specific.h" +#include "base/memory/scoped_ptr.h" +#include "ui/aura/client/stacking_client.h" + +namespace aura { +class RootWindow; +class Window; +namespace client { +class DefaultCaptureClient; +class FocusClient; +} +namespace test { +class TestActivationClient; +} +} + +namespace gfx { +class Rect; +} + +namespace views { +namespace corewm { +class CompoundEventFilter; +class InputMethodEventFilter; +} +} + +namespace content { + +// Creates a minimal environment for running the shell. We can't pull in all of +// ash here, but we can create attach several of the same things we'd find in +// the ash parts of the code. +class MinimalAsh : public aura::client::StackingClient { + public: + MinimalAsh(); + virtual ~MinimalAsh(); + + // Overridden from client::StackingClient: + virtual aura::Window* GetDefaultParent(aura::Window* context, + aura::Window* window, + const gfx::Rect& bounds) OVERRIDE; + + private: + scoped_ptr<aura::RootWindow> root_window_; + + // Owned by RootWindow + views::corewm::CompoundEventFilter* root_window_event_filter_; + + scoped_ptr<aura::client::DefaultCaptureClient> capture_client_; + scoped_ptr<views::corewm::InputMethodEventFilter> input_method_filter_; + scoped_ptr<aura::test::TestActivationClient> test_activation_client_; + scoped_ptr<aura::client::FocusClient> focus_client_; + + DISALLOW_COPY_AND_ASSIGN(MinimalAsh); +}; + +} // namespace content; + +#endif // CONTENT_SHELL_MINIMAL_ASH_H_ |