content_settings_observer.cc 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Copyright (c) 2016 GitHub, Inc.
  2. // Use of this source code is governed by the MIT license that can be
  3. // found in the LICENSE file.
  4. #include "shell/renderer/content_settings_observer.h"
  5. #include "content/public/renderer/render_frame.h"
  6. #include "shell/common/options_switches.h"
  7. #include "third_party/blink/public/platform/url_conversion.h"
  8. #include "third_party/blink/public/platform/web_security_origin.h"
  9. #include "third_party/blink/public/web/web_local_frame.h"
  10. namespace electron {
  11. ContentSettingsObserver::ContentSettingsObserver(
  12. content::RenderFrame* render_frame)
  13. : content::RenderFrameObserver(render_frame) {
  14. render_frame->GetWebFrame()->SetContentSettingsClient(this);
  15. }
  16. ContentSettingsObserver::~ContentSettingsObserver() {}
  17. bool ContentSettingsObserver::AllowDatabase() {
  18. if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
  19. switches::kEnableWebSQL)) {
  20. return false;
  21. }
  22. blink::WebFrame* frame = render_frame()->GetWebFrame();
  23. if (frame->GetSecurityOrigin().IsUnique() ||
  24. frame->Top()->GetSecurityOrigin().IsUnique())
  25. return false;
  26. auto origin = blink::WebStringToGURL(frame->GetSecurityOrigin().ToString());
  27. if (!origin.IsStandard())
  28. return false;
  29. return true;
  30. }
  31. bool ContentSettingsObserver::AllowStorage(bool local) {
  32. blink::WebFrame* frame = render_frame()->GetWebFrame();
  33. if (frame->GetSecurityOrigin().IsUnique() ||
  34. frame->Top()->GetSecurityOrigin().IsUnique())
  35. return false;
  36. auto origin = blink::WebStringToGURL(frame->GetSecurityOrigin().ToString());
  37. if (!origin.IsStandard())
  38. return false;
  39. return true;
  40. }
  41. bool ContentSettingsObserver::AllowIndexedDB(
  42. const blink::WebSecurityOrigin& security_origin) {
  43. blink::WebFrame* frame = render_frame()->GetWebFrame();
  44. if (frame->GetSecurityOrigin().IsUnique() ||
  45. frame->Top()->GetSecurityOrigin().IsUnique())
  46. return false;
  47. auto origin = blink::WebStringToGURL(frame->GetSecurityOrigin().ToString());
  48. if (!origin.IsStandard())
  49. return false;
  50. return true;
  51. }
  52. void ContentSettingsObserver::OnDestruct() {
  53. delete this;
  54. }
  55. } // namespace electron