Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1448)

Unified Diff: mojo/examples/browser/browser.cc

Issue 342003006: Turn 'browser' app into a 'launcher_ui' app that window_manager embeds. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: cleanup Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | mojo/examples/window_manager/window_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/examples/browser/browser.cc
diff --git a/mojo/examples/browser/browser.cc b/mojo/examples/browser/browser.cc
index bd0703c8c26f4fda33bd85c8717176a9766d7bc3..1a7c0cfa14d617621f08174616a288b2aad1b904 100644
--- a/mojo/examples/browser/browser.cc
+++ b/mojo/examples/browser/browser.cc
@@ -3,6 +3,8 @@
// found in the LICENSE file.
#include "base/basictypes.h"
+#include "base/strings/string_util.h"
+#include "base/strings/utf_string_conversions.h"
#include "mojo/public/cpp/application/application.h"
#include "mojo/services/navigation/navigation.mojom.h"
#include "mojo/services/public/cpp/view_manager/node.h"
@@ -10,9 +12,9 @@
#include "mojo/services/public/cpp/view_manager/view_manager.h"
#include "mojo/services/public/cpp/view_manager/view_manager_delegate.h"
#include "mojo/services/public/cpp/view_manager/view_observer.h"
-#include "mojo/services/public/interfaces/launcher/launcher.mojom.h"
#include "mojo/views/native_widget_view_manager.h"
#include "mojo/views/views_init.h"
+#include "ui/events/event.h"
#include "ui/views/controls/textfield/textfield.h"
#include "ui/views/controls/textfield/textfield_controller.h"
#include "ui/views/layout/layout_manager.h"
@@ -53,16 +55,11 @@ class BrowserLayoutManager : public views::LayoutManager {
private:
// Overridden from views::LayoutManager:
virtual void Layout(views::View* host) OVERRIDE {
- // Browser view has two children:
- // 1. text input field.
- // 2. content view.
- DCHECK_EQ(2, host->child_count());
+ // Browser view has one child, a text input field.
+ DCHECK_EQ(1, host->child_count());
views::View* text_field = host->child_at(0);
gfx::Size ps = text_field->GetPreferredSize();
text_field->SetBoundsRect(gfx::Rect(host->width(), ps.height()));
- views::View* content_area = host->child_at(1);
- content_area->SetBounds(0, text_field->bounds().bottom(), host->width(),
- host->height() - text_field->bounds().bottom());
}
virtual gfx::Size GetPreferredSize(const views::View* host) const OVERRIDE {
return gfx::Size();
@@ -75,10 +72,9 @@ class BrowserLayoutManager : public views::LayoutManager {
// TODO: cleanup!
class Browser : public Application,
public view_manager::ViewManagerDelegate,
- public views::TextfieldController,
- public InterfaceImpl<launcher::LauncherClient> {
+ public views::TextfieldController {
public:
- Browser() : view_manager_(NULL), view_(NULL), content_node_(NULL) {}
+ Browser() : view_manager_(NULL), view_(NULL) {}
virtual ~Browser() {
}
@@ -88,8 +84,7 @@ class Browser : public Application,
virtual void Initialize() MOJO_OVERRIDE {
views_init_.reset(new ViewsInit);
view_manager::ViewManager::Create(this, this);
- ConnectTo("mojo:mojo_launcher", &launcher_);
- launcher_.set_client(this);
+ ConnectTo("mojo:mojo_window_manager", &navigator_host_);
}
void CreateWidget(const gfx::Size& size) {
@@ -98,13 +93,12 @@ class Browser : public Application,
views::WidgetDelegateView* widget_delegate = new views::WidgetDelegateView;
widget_delegate->GetContentsView()->AddChildView(textfield);
- widget_delegate->GetContentsView()->AddChildView(
- new NodeView(content_node_));
widget_delegate->GetContentsView()->SetLayoutManager(
new BrowserLayoutManager);
views::Widget* widget = new views::Widget;
- views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW);
+ views::Widget::InitParams params(
+ views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
params.native_widget = new NativeWidgetViewManager(widget, view_);
params.delegate = widget_delegate;
params.bounds = gfx::Rect(size.width(), size.height());
@@ -120,12 +114,7 @@ class Browser : public Application,
view_manager_ = view_manager;
view_ = view_manager::View::Create(view_manager_);
view_manager_->GetRoots().front()->SetActiveView(view_);
-
- content_node_ = view_manager::Node::Create(view_manager_);
- root->AddChild(content_node_);
-
root->SetFocus();
-
CreateWidget(root->bounds().size());
}
@@ -135,35 +124,30 @@ class Browser : public Application,
if (key_event.key_code() == ui::VKEY_RETURN) {
GURL url(sender->text());
printf("User entered this URL: %s\n", url.spec().c_str());
- launcher_->Launch(url.spec());
+ navigation::NavigationDetailsPtr nav_details(
+ navigation::NavigationDetails::New());
+ nav_details->url = url.spec();
+ navigator_host_->RequestNavigate(view_manager_->GetRoots().front()->id(),
Ben Goodger (Google) 2014/06/19 02:48:44 cool!
+ nav_details.Pass());
}
return false;
}
- // launcher::LauncherClient:
- virtual void OnLaunch(
- const String& handler_url,
- URLResponsePtr response,
- ScopedDataPipeConsumerHandle response_body_stream) OVERRIDE {
- content_node_->Embed(handler_url);
-
- navigation::NavigationDetailsPtr details(
- navigation::NavigationDetails::New());
- details->url = response->url;
- details->response = response.Pass();
- details->response_body_stream = response_body_stream.Pass();
-
- navigation::NavigatorPtr navigator;
- ConnectTo(handler_url, &navigator);
- navigator->Navigate(content_node_->id(), details.Pass());
+ virtual void ContentsChanged(views::Textfield* sender,
+ const base::string16& new_contents) OVERRIDE {
+ // Ghetto workaround for crbug.com/386256.
Ben Goodger (Google) 2014/06/19 02:48:44 lol
+ if (EndsWith(new_contents, base::ASCIIToUTF16("]"), false)) {
+ sender->SetText(new_contents.substr(0, new_contents.size() - 1));
+ HandleKeyEvent(sender, ui::KeyEvent(ui::ET_KEY_RELEASED, ui::VKEY_RETURN,
+ 0, false));
+ }
}
scoped_ptr<ViewsInit> views_init_;
view_manager::ViewManager* view_manager_;
view_manager::View* view_;
- view_manager::Node* content_node_;
- launcher::LauncherPtr launcher_;
+ navigation::NavigatorHostPtr navigator_host_;
DISALLOW_COPY_AND_ASSIGN(Browser);
};
« no previous file with comments | « no previous file | mojo/examples/window_manager/window_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698