ewk_security_origin.cpp 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. /*
  2. Copyright (C) 2012 Intel Corporation
  3. This library is free software; you can redistribute it and/or
  4. modify it under the terms of the GNU Library General Public
  5. License as published by the Free Software Foundation; either
  6. version 2 of the License, or (at your option) any later version.
  7. This library is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  10. Library General Public License for more details.
  11. You should have received a copy of the GNU Library General Public License
  12. along with this library; see the file COPYING.LIB. If not, write to
  13. the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
  14. Boston, MA 02110-1301, USA.
  15. */
  16. #include "config.h"
  17. #include "ewk_security_origin.h"
  18. #include "ApplicationCache.h"
  19. #include "ApplicationCacheStorage.h"
  20. #include "DatabaseManager.h"
  21. #include "SecurityOrigin.h"
  22. #include "ewk_security_origin_private.h"
  23. #include "ewk_web_database.h"
  24. #include "ewk_web_database_private.h"
  25. #include <wtf/RefPtr.h>
  26. #include <wtf/text/CString.h>
  27. struct _Ewk_Security_Origin {
  28. RefPtr<WebCore::SecurityOrigin> securityOrigin;
  29. const char* protocol;
  30. const char* host;
  31. const char* originString;
  32. };
  33. const char* ewk_security_origin_protocol_get(const Ewk_Security_Origin* origin)
  34. {
  35. EINA_SAFETY_ON_NULL_RETURN_VAL(origin, 0);
  36. return origin->protocol;
  37. }
  38. const char* ewk_security_origin_host_get(const Ewk_Security_Origin* origin)
  39. {
  40. EINA_SAFETY_ON_NULL_RETURN_VAL(origin, 0);
  41. return origin->host;
  42. }
  43. const char* ewk_security_origin_string_get(const Ewk_Security_Origin* origin)
  44. {
  45. EINA_SAFETY_ON_NULL_RETURN_VAL(origin, 0);
  46. return origin->originString;
  47. }
  48. uint32_t ewk_security_origin_port_get(const Ewk_Security_Origin* origin)
  49. {
  50. EINA_SAFETY_ON_NULL_RETURN_VAL(origin, 0);
  51. return origin->securityOrigin->port();
  52. }
  53. uint64_t ewk_security_origin_web_database_usage_get(const Ewk_Security_Origin* origin)
  54. {
  55. #if ENABLE(SQL_DATABASE)
  56. EINA_SAFETY_ON_NULL_RETURN_VAL(origin, 0);
  57. return WebCore::DatabaseManager::manager().usageForOrigin(origin->securityOrigin.get());
  58. #else
  59. UNUSED_PARAM(origin);
  60. return 0;
  61. #endif
  62. }
  63. uint64_t ewk_security_origin_web_database_quota_get(const Ewk_Security_Origin* origin)
  64. {
  65. #if ENABLE(SQL_DATABASE)
  66. EINA_SAFETY_ON_NULL_RETURN_VAL(origin, 0);
  67. return WebCore::DatabaseManager::manager().quotaForOrigin(origin->securityOrigin.get());
  68. #else
  69. UNUSED_PARAM(origin);
  70. return 0;
  71. #endif
  72. }
  73. void ewk_security_origin_web_database_quota_set(const Ewk_Security_Origin* origin, uint64_t quota)
  74. {
  75. EINA_SAFETY_ON_NULL_RETURN(origin);
  76. #if ENABLE(SQL_DATABASE)
  77. WebCore::DatabaseManager::manager().setQuota(origin->securityOrigin.get(), quota);
  78. #endif
  79. }
  80. void ewk_security_origin_application_cache_quota_set(const Ewk_Security_Origin* origin, int64_t quota)
  81. {
  82. EINA_SAFETY_ON_NULL_RETURN(origin);
  83. WebCore::cacheStorage().storeUpdatedQuotaForOrigin(origin->securityOrigin.get(), quota);
  84. }
  85. void ewk_security_origin_application_cache_clear(const Ewk_Security_Origin* origin)
  86. {
  87. EINA_SAFETY_ON_NULL_RETURN(origin);
  88. WebCore::ApplicationCache::deleteCacheForOrigin(origin->securityOrigin.get());
  89. }
  90. Eina_List* ewk_security_origin_web_database_get_all(const Ewk_Security_Origin* origin)
  91. {
  92. EINA_SAFETY_ON_NULL_RETURN_VAL(origin, 0);
  93. Eina_List* databases = 0;
  94. #if ENABLE(SQL_DATABASE)
  95. Vector<WTF::String> names;
  96. if (!WebCore::DatabaseManager::manager().databaseNamesForOrigin(origin->securityOrigin.get(), names))
  97. return 0;
  98. for (unsigned i = 0; i < names.size(); i++) {
  99. Ewk_Web_Database* database = ewk_web_database_new(origin->securityOrigin.get(), names[i].utf8().data());
  100. databases = eina_list_append(databases, database);
  101. }
  102. #else
  103. UNUSED_PARAM(origin);
  104. #endif
  105. return databases;
  106. }
  107. void ewk_security_origin_free(Ewk_Security_Origin* origin)
  108. {
  109. EINA_SAFETY_ON_NULL_RETURN(origin);
  110. origin->securityOrigin = 0;
  111. eina_stringshare_del(origin->host);
  112. eina_stringshare_del(origin->protocol);
  113. eina_stringshare_del(origin->originString);
  114. delete origin;
  115. }
  116. Ewk_Security_Origin* ewk_security_origin_new_from_string(const char* url)
  117. {
  118. return ewk_security_origin_new(WebCore::SecurityOrigin::createFromString(String::fromUTF8(url)).get());
  119. }
  120. /**
  121. * @internal
  122. * Creates a EWK wrapper for WebCore Security Origin object.
  123. *
  124. * @param coreOrigin WebCore Security Origin object
  125. *
  126. * @return a EWK wrapper of WebCore Security Origin object which should be
  127. * freed by ewk_security_origin_free()
  128. */
  129. Ewk_Security_Origin* ewk_security_origin_new(WebCore::SecurityOrigin* coreOrigin)
  130. {
  131. Ewk_Security_Origin* origin = new Ewk_Security_Origin;
  132. origin->securityOrigin = coreOrigin;
  133. origin->protocol = eina_stringshare_add(coreOrigin->protocol().utf8().data());
  134. origin->host = eina_stringshare_add(coreOrigin->host().utf8().data());
  135. origin->originString = eina_stringshare_add(origin->securityOrigin->toString().utf8().data());
  136. return origin;
  137. }