Index: mojo/examples/embedded_app/embedded_app.cc |
diff --git a/mojo/examples/embedded_app/embedded_app.cc b/mojo/examples/embedded_app/embedded_app.cc |
index c81c905db13e5b0acae6167269e6b5e37a65f8b9..906b904aa767781b1501af99c9a220c0b680133a 100644 |
--- a/mojo/examples/embedded_app/embedded_app.cc |
+++ b/mojo/examples/embedded_app/embedded_app.cc |
@@ -25,21 +25,13 @@ |
namespace mojo { |
namespace examples { |
-class EmbeddedApp; |
-class NavigatorImpl : public InterfaceImpl<Navigator> { |
- public: |
- explicit NavigatorImpl(EmbeddedApp* app) : app_(app) {} |
+const SkColor kColors[] = { SK_ColorYELLOW, |
+ SK_ColorRED, |
+ SK_ColorGREEN, |
+ SK_ColorMAGENTA }; |
- private: |
- virtual void Navigate( |
- uint32 view_id, |
- NavigationDetailsPtr navigation_details, |
- ResponseDetailsPtr response_details) OVERRIDE; |
- |
- EmbeddedApp* app_; |
- DISALLOW_COPY_AND_ASSIGN(NavigatorImpl); |
-}; |
+class EmbeddedApp; |
class EmbeddedApp |
: public ApplicationDelegate, |
@@ -47,18 +39,11 @@ class EmbeddedApp |
public ViewObserver { |
public: |
EmbeddedApp() |
- : navigator_factory_(this), |
- view_manager_(NULL), |
- view_manager_client_factory_(this) { |
+ : view_manager_client_factory_(this) { |
url::AddStandardScheme("mojo"); |
} |
virtual ~EmbeddedApp() {} |
- void SetViewColor(uint32 view_id, SkColor color) { |
- pending_view_colors_[view_id] = color; |
- ProcessPendingViewColor(view_id); |
- } |
- |
private: |
// Overridden from ApplicationDelegate: |
@@ -72,7 +57,6 @@ class EmbeddedApp |
virtual bool ConfigureIncomingConnection(ApplicationConnection* connection) |
MOJO_OVERRIDE { |
connection->AddService(&view_manager_client_factory_); |
- connection->AddService(&navigator_factory_); |
return true; |
} |
@@ -83,7 +67,7 @@ class EmbeddedApp |
scoped_ptr<ServiceProvider> imported_services) OVERRIDE { |
root->AddObserver(this); |
roots_[root->id()] = root; |
- ProcessPendingViewColor(root->id()); |
+ root->SetColor(kColors[next_color_++ % arraysize(kColors)]); |
} |
virtual void OnViewManagerDisconnected(ViewManager* view_manager) OVERRIDE { |
base::MessageLoop::current()->Quit(); |
@@ -106,53 +90,17 @@ class EmbeddedApp |
} |
} |
- void ProcessPendingViewColor(uint32 view_id) { |
- RootMap::iterator root = roots_.find(view_id); |
- if (root == roots_.end()) |
- return; |
- |
- PendingViewColors::iterator color = pending_view_colors_.find(view_id); |
- if (color == pending_view_colors_.end()) |
- return; |
- |
- root->second->SetColor(color->second); |
- pending_view_colors_.erase(color); |
- } |
- |
- InterfaceFactoryImplWithContext<NavigatorImpl, EmbeddedApp> |
- navigator_factory_; |
- |
- ViewManager* view_manager_; |
NavigatorHostPtr navigator_host_; |
ViewManagerClientFactory view_manager_client_factory_; |
typedef std::map<Id, View*> RootMap; |
RootMap roots_; |
- // We can receive navigations for views we don't have yet. |
- typedef std::map<uint32, SkColor> PendingViewColors; |
- PendingViewColors pending_view_colors_; |
+ int next_color_; |
DISALLOW_COPY_AND_ASSIGN(EmbeddedApp); |
}; |
-void NavigatorImpl::Navigate(uint32 view_id, |
- NavigationDetailsPtr navigation_details, |
- ResponseDetailsPtr response_details) { |
- GURL url(navigation_details->request->url.To<std::string>()); |
- if (!url.is_valid()) { |
- LOG(ERROR) << "URL is invalid."; |
- return; |
- } |
- // TODO(aa): Verify new URL is same origin as current origin. |
- SkColor color = 0x00; |
- if (!base::HexStringToUInt(url.path().substr(1), &color)) { |
- LOG(ERROR) << "Invalid URL, path not convertible to integer"; |
- return; |
- } |
- app_->SetViewColor(view_id, color); |
-} |
- |
} // namespace examples |
} // namespace mojo |