Upstream version 9.38.207.0
[platform/framework/web/crosswalk.git] / src / xwalk / application / browser / application_protocols.cc
index d81fcd2..dcce8d4 100644 (file)
@@ -27,7 +27,6 @@
 #include "net/url_request/url_request_error_job.h"
 #include "net/url_request/url_request_file_job.h"
 #include "net/url_request/url_request_simple_job.h"
-#include "xwalk/runtime/browser/xwalk_runner.h"
 #include "xwalk/application/browser/application_service.h"
 #include "xwalk/application/common/application_data.h"
 #include "xwalk/application/common/application_file_util.h"
@@ -35,7 +34,7 @@
 #include "xwalk/application/common/application_resource.h"
 #include "xwalk/application/common/constants.h"
 #include "xwalk/application/common/manifest_handlers/csp_handler.h"
-#include "xwalk/application/common/manifest_handlers/main_document_handler.h"
+#include "xwalk/runtime/common/xwalk_system_locale.h"
 
 using content::BrowserThread;
 using content::ResourceRequestInfo;
@@ -86,58 +85,6 @@ net::HttpResponseHeaders* BuildHttpHeaders(
   return new net::HttpResponseHeaders(raw_headers);
 }
 
-class GeneratedMainDocumentJob: public net::URLRequestSimpleJob {
- public:
-  GeneratedMainDocumentJob(
-      net::URLRequest* request,
-      net::NetworkDelegate* network_delegate,
-      const base::FilePath& relative_path,
-      const scoped_refptr<const ApplicationData> application,
-      const std::string& content_security_policy)
-    : net::URLRequestSimpleJob(request, network_delegate),
-      application_(application),
-      mime_type_("text/html"),
-      relative_path_(relative_path),
-      content_security_policy_(content_security_policy) {
-  }
-
-  // Overridden from URLRequestSimpleJob:
-  virtual int GetData(std::string* mime_type,
-                      std::string* charset,
-                      std::string* data,
-                      const net::CompletionCallback& callback) const OVERRIDE {
-    *mime_type = mime_type_;
-    *charset = "utf-8";
-    *data = "<!DOCTYPE html>\n<body>\n";
-
-    MainDocumentInfo* main_info = xwalk::application::ToMainDocumentInfo(
-        application_->GetManifestData(keys::kAppMainKey));
-    const std::vector<std::string>& main_scripts = main_info->GetMainScripts();
-    for (size_t i = 0; i < main_scripts.size(); ++i) {
-      *data += "<script src=\"";
-      *data += main_scripts[i];
-      *data += "\"></script>\n";
-    }
-    return net::OK;
-  }
-
-  virtual void GetResponseInfo(net::HttpResponseInfo* info) OVERRIDE {
-    response_info_.headers = BuildHttpHeaders(content_security_policy_,
-                                              mime_type_, "GET", relative_path_,
-                                              relative_path_, true);
-    *info = response_info_;
-  }
-
- private:
-  virtual ~GeneratedMainDocumentJob() {}
-
-  scoped_refptr<const ApplicationData> application_;
-  const std::string mime_type_;
-  const base::FilePath relative_path_;
-  net::HttpResponseInfo response_info_;
-  std::string content_security_policy_;
-};
-
 void ReadResourceFilePath(
     const ApplicationResource& resource,
     base::FilePath* file_path) {
@@ -269,11 +216,11 @@ class ApplicationProtocolHandler
 // The |locale| should be expanded to user agent locale.
 // Such as, "en-us" will be expaned as "en-us, en".
 void GetUserAgentLocales(const std::string& sys_locale,
-                         std::list<std::string>& ua_locales) {
+                         std::list<std::string>& ua_locales) {  // NOLINT
   if (sys_locale.empty())
     return;
 
-  std::string locale = StringToLowerASCII(sys_locale);
+  std::string locale = base::StringToLowerASCII(sys_locale);
   size_t position;
   do {
     ua_locales.push_back(locale);
@@ -288,6 +235,11 @@ ApplicationProtocolHandler::MaybeCreateJob(
   const std::string& application_id = request->url().host();
   scoped_refptr<ApplicationData> application =
       cache_.GetApplicationData(application_id);
+
+  if (!application)
+    return new net::URLRequestErrorJob(
+        request, network_delegate, net::ERR_FILE_NOT_FOUND);
+
   base::FilePath relative_path =
       ApplicationURLToRelativeFilePath(request->url());
   base::FilePath directory_path;
@@ -295,7 +247,7 @@ ApplicationProtocolHandler::MaybeCreateJob(
   if (application) {
     directory_path = application->Path();
 
-    const char* csp_key = GetCSPKey(application->GetPackageType());
+    const char* csp_key = GetCSPKey(application->manifest_type());
     const CSPInfo* csp_info = static_cast<CSPInfo*>(
           application->GetManifestData(csp_key));
     if (csp_info) {
@@ -310,19 +262,9 @@ ApplicationProtocolHandler::MaybeCreateJob(
     }
   }
 
-  const std::string& path = request->url().path();
-  if (application &&
-      path.size() > 1 &&
-      path.substr(1) == kGeneratedMainDocumentFilename) {
-    return new GeneratedMainDocumentJob(request, network_delegate,
-                                        relative_path, application,
-                                        content_security_policy);
-  }
-
   std::list<std::string> locales;
-  if (application->GetPackageType() == Manifest::TYPE_WGT) {
-    GetUserAgentLocales(
-        xwalk::XWalkRunner::GetInstance()->GetLocale(), locales);
+  if (application && application->manifest_type() == Manifest::TYPE_WIDGET) {
+    GetUserAgentLocales(GetSystemLocale(), locales);
     GetUserAgentLocales(application->GetManifest()->default_locale(), locales);
   }