blob: 233e8af179d49f9acaecd56a75eae776fb7510b4 [file] [log] [blame]
// 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 "mojo/apps/js/content_handler_impl.h"
#include "mojo/apps/js/application_delegate_impl.h"
#include "mojo/apps/js/js_app.h"
#include "mojo/common/data_pipe_utils.h"
namespace mojo {
namespace apps {
class ContentHandlerJSApp : public JSApp {
public:
ContentHandlerJSApp(ApplicationDelegateImpl* app_delegate_impl,
URLResponsePtr content)
: JSApp(app_delegate_impl),
content_(content.Pass()) {
}
bool Load(std::string* source, std::string* file_name) override {
*file_name = content_->url;
if (content_.is_null())
return false;
return common::BlockingCopyToString(content_->body.Pass(), source);
}
private:
URLResponsePtr content_;
};
ContentHandlerImpl::ContentHandlerImpl(ApplicationDelegateImpl* app)
: app_delegate_impl_(app) {
}
ContentHandlerImpl::~ContentHandlerImpl() {
}
void ContentHandlerImpl::OnConnect(
const mojo::String& requestor_url,
URLResponsePtr content,
InterfaceRequest<ServiceProvider> service_provider) {
scoped_ptr<JSApp> js_app(
new ContentHandlerJSApp(app_delegate_impl_, content.Pass()));
app_delegate_impl_->StartJSApp(js_app.Pass());
}
} // namespace apps
} // namespace mojo