Browse Source

move pdfviewer ui data source to separate file

deepak1556 8 years ago
parent
commit
fd8c450ef3

+ 3 - 95
atom/browser/atom_web_ui_controller_factory.cc

@@ -4,107 +4,15 @@
 
 #include "atom/browser/atom_web_ui_controller_factory.h"
 
-#include <map>
 #include <string>
 
-#include "atom/browser/ui/webui/pdf_viewer_handler.h"
-#include "base/memory/ptr_util.h"
+#include "atom/browser/ui/webui/pdf_viewer_ui.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
-#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/url_data_source.h"
 #include "content/public/browser/web_contents.h"
-#include "content/public/browser/web_ui.h"
-#include "content/public/browser/web_ui_controller.h"
-#include "content/public/common/bindings_policy.h"
-#include "grit/pdf_viewer_resources_map.h"
-#include "net/base/mime_util.h"
-#include "ui/base/resource/resource_bundle.h"
 
 namespace atom {
 
-namespace {
-
-const char kChromeUIPdfViewerHost[] = "pdf-viewer";
-
-std::string PathWithoutParams(const std::string& path) {
-  return GURL(std::string("chrome://pdf-viewer/") + path).path().substr(1);
-}
-
-class BundledDataSource : public content::URLDataSource {
- public:
-  BundledDataSource() {
-    for (size_t i = 0; i < kPdfViewerResourcesSize; ++i) {
-      base::FilePath resource_path =
-          base::FilePath().AppendASCII(kPdfViewerResources[i].name);
-      resource_path = resource_path.NormalizePathSeparators();
-
-      DCHECK(path_to_resource_id_.find(resource_path) ==
-             path_to_resource_id_.end());
-      path_to_resource_id_[resource_path] = kPdfViewerResources[i].value;
-    }
-  }
-
-  // content::URLDataSource implementation.
-  std::string GetSource() const override { return kChromeUIPdfViewerHost; }
-
-  void StartDataRequest(const std::string& path,
-                        int render_process_id,
-                        int render_frame_id,
-                        const GotDataCallback& callback) override {
-    std::string filename = PathWithoutParams(path);
-    std::map<base::FilePath, int>::const_iterator entry =
-        path_to_resource_id_.find(base::FilePath(filename));
-    if (entry != path_to_resource_id_.end()) {
-      int resource_id = entry->second;
-      const ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
-      callback.Run(rb.LoadDataResourceBytes(resource_id));
-    }
-  }
-
-  std::string GetMimeType(const std::string& path) const override {
-    std::string filename = PathWithoutParams(path);
-    std::string mime_type;
-    net::GetMimeTypeFromFile(base::FilePath(filename), &mime_type);
-    return mime_type;
-  }
-
-  bool ShouldAddContentSecurityPolicy() const override { return false; }
-
-  bool ShouldDenyXFrameOptions() const override { return false; }
-
-  bool ShouldServeMimeTypeAsContentTypeHeader() const override { return true; }
-
- private:
-  ~BundledDataSource() override {}
-
-  // A map from a resource path to the resource ID.
-  std::map<base::FilePath, int> path_to_resource_id_;
-
-  DISALLOW_COPY_AND_ASSIGN(BundledDataSource);
-};
-
-class PdfViewerUI : public content::WebUIController {
- public:
-  PdfViewerUI(content::BrowserContext* browser_context,
-              content::WebUI* web_ui,
-              const std::string& view_id)
-      : content::WebUIController(web_ui) {
-    web_ui->AddMessageHandler(new PdfViewerHandler(view_id));
-    content::URLDataSource::Add(browser_context, new BundledDataSource);
-  }
-
-  // content::WebUIController implementation.
-  void RenderViewCreated(content::RenderViewHost* rvh) override {
-    rvh->AllowBindings(content::BINDINGS_POLICY_WEB_UI);
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(PdfViewerUI);
-};
-
-}  // namespace
-
 // static
 AtomWebUIControllerFactory* AtomWebUIControllerFactory::GetInstance() {
   return base::Singleton<AtomWebUIControllerFactory>::get();
@@ -117,7 +25,7 @@ AtomWebUIControllerFactory::~AtomWebUIControllerFactory() {}
 content::WebUI::TypeID AtomWebUIControllerFactory::GetWebUIType(
     content::BrowserContext* browser_context,
     const GURL& url) const {
-  if (url.host() == kChromeUIPdfViewerHost) {
+  if (url.host() == PdfViewerUI::kHost) {
     return const_cast<AtomWebUIControllerFactory*>(this);
   }
 
@@ -139,7 +47,7 @@ bool AtomWebUIControllerFactory::UseWebUIBindingsForURL(
 content::WebUIController*
 AtomWebUIControllerFactory::CreateWebUIControllerForURL(content::WebUI* web_ui,
                                                         const GURL& url) const {
-  if (url.host() == kChromeUIPdfViewerHost) {
+  if (url.host() == PdfViewerUI::kHost) {
     base::StringPairs toplevel_params;
     base::SplitStringIntoKeyValuePairs(url.query(), '=', '&', &toplevel_params);
     std::string view_id;

+ 0 - 1
atom/browser/atom_web_ui_controller_factory.h

@@ -7,7 +7,6 @@
 
 #include "base/macros.h"
 #include "base/memory/singleton.h"
-#include "content/public/browser/web_ui.h"
 #include "content/public/browser/web_ui_controller_factory.h"
 
 namespace atom {

+ 94 - 0
atom/browser/ui/webui/pdf_viewer_ui.cc

@@ -0,0 +1,94 @@
+// Copyright (c) 2017 GitHub, Inc.
+// Use of this source code is governed by the MIT license that can be
+// found in the LICENSE file.
+
+#include "atom/browser/ui/webui/pdf_viewer_ui.h"
+
+#include <map>
+
+#include "atom/browser/ui/webui/pdf_viewer_handler.h"
+#include "content/public/browser/render_view_host.h"
+#include "content/public/browser/url_data_source.h"
+#include "content/public/common/bindings_policy.h"
+#include "grit/pdf_viewer_resources_map.h"
+#include "net/base/mime_util.h"
+#include "ui/base/resource/resource_bundle.h"
+
+namespace atom {
+
+namespace {
+
+std::string PathWithoutParams(const std::string& path) {
+  return GURL(std::string("chrome://pdf-viewer/") + path).path().substr(1);
+}
+
+class BundledDataSource : public content::URLDataSource {
+ public:
+  BundledDataSource() {
+    for (size_t i = 0; i < kPdfViewerResourcesSize; ++i) {
+      base::FilePath resource_path =
+          base::FilePath().AppendASCII(kPdfViewerResources[i].name);
+      resource_path = resource_path.NormalizePathSeparators();
+
+      DCHECK(path_to_resource_id_.find(resource_path) ==
+             path_to_resource_id_.end());
+      path_to_resource_id_[resource_path] = kPdfViewerResources[i].value;
+    }
+  }
+
+  // content::URLDataSource implementation.
+  std::string GetSource() const override { return PdfViewerUI::kHost; }
+
+  void StartDataRequest(const std::string& path,
+                        int render_process_id,
+                        int render_frame_id,
+                        const GotDataCallback& callback) override {
+    std::string filename = PathWithoutParams(path);
+    std::map<base::FilePath, int>::const_iterator entry =
+        path_to_resource_id_.find(base::FilePath(filename));
+    if (entry != path_to_resource_id_.end()) {
+      int resource_id = entry->second;
+      const ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
+      callback.Run(rb.LoadDataResourceBytes(resource_id));
+    }
+  }
+
+  std::string GetMimeType(const std::string& path) const override {
+    std::string filename = PathWithoutParams(path);
+    std::string mime_type;
+    net::GetMimeTypeFromFile(base::FilePath(filename), &mime_type);
+    return mime_type;
+  }
+
+  bool ShouldAddContentSecurityPolicy() const override { return false; }
+
+  bool ShouldDenyXFrameOptions() const override { return false; }
+
+  bool ShouldServeMimeTypeAsContentTypeHeader() const override { return true; }
+
+ private:
+  ~BundledDataSource() override {}
+
+  // A map from a resource path to the resource ID.
+  std::map<base::FilePath, int> path_to_resource_id_;
+
+  DISALLOW_COPY_AND_ASSIGN(BundledDataSource);
+};
+
+}  // namespace
+
+const char PdfViewerUI::kHost[] = "pdf-viewer";
+
+PdfViewerUI::PdfViewerUI(content::BrowserContext* browser_context,
+                         content::WebUI* web_ui,
+                         const std::string& view_id)
+    : content::WebUIController(web_ui) {
+  web_ui->AddMessageHandler(new PdfViewerHandler(view_id));
+  content::URLDataSource::Add(browser_context, new BundledDataSource);
+}
+
+void PdfViewerUI::RenderViewCreated(content::RenderViewHost* rvh) {
+  rvh->AllowBindings(content::BINDINGS_POLICY_WEB_UI);
+}
+
+}  // namespace atom

+ 36 - 0
atom/browser/ui/webui/pdf_viewer_ui.h

@@ -0,0 +1,36 @@
+// Copyright (c) 2017 GitHub, Inc.
+// Use of this source code is governed by the MIT license that can be
+// found in the LICENSE file.
+
+#ifndef ATOM_BROWSER_UI_WEBUI_PDF_VIEWER_UI_H_
+#define ATOM_BROWSER_UI_WEBUI_PDF_VIEWER_UI_H_
+
+#include <string>
+
+#include "base/macros.h"
+#include "content/public/browser/web_ui_controller.h"
+
+namespace content {
+class BrowserContext;
+}
+
+namespace atom {
+
+class PdfViewerUI : public content::WebUIController {
+ public:
+  static const char kHost[];
+
+  PdfViewerUI(content::BrowserContext* browser_context,
+              content::WebUI* web_ui,
+              const std::string& view_id);
+
+  // content::WebUIController implementation.
+  void RenderViewCreated(content::RenderViewHost* rvh) override;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(PdfViewerUI);
+};
+
+}  // namespace atom
+
+#endif  // ATOM_BROWSER_UI_WEBUI_PDF_VIEWER_UI_H_

+ 2 - 0
filenames.gypi

@@ -330,6 +330,8 @@
       'atom/browser/ui/views/win_frame_view.h',
       'atom/browser/ui/webui/pdf_viewer_handler.cc',
       'atom/browser/ui/webui/pdf_viewer_handler.h',
+      'atom/browser/ui/webui/pdf_viewer_ui.cc',
+      'atom/browser/ui/webui/pdf_viewer_ui.h',
       'atom/browser/ui/win/atom_desktop_native_widget_aura.cc',
       'atom/browser/ui/win/atom_desktop_native_widget_aura.h',
       'atom/browser/ui/win/atom_desktop_window_tree_host_win.cc',