GitHub PullRequestReviewCommentEvent at 2014-10-02 10:45:48
Repository: tizen-extensions-crosswalk
Actor: zolkis
Payload: {"action":"created","comment":{"url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/pulls/comments/18332333","id":18332333,"diff_hunk":"@@ -0,0 +1,1375 @@\n+// Copyright (c) 2014 Intel Corporation. All rights reserved.\n+// Use of  source code is governed by a BSD-style license that can be\n+// found in the LICENSE file.\n+\n+#include \"telephony/telephony_backend_ofono.h\"\n+\n+#include <gio/gio.h>\n+#include <time.h>\n+#include <uuid/uuid.h>\n+\n+#include <string>\n+#include <sstream>\n+\n+#define LOG_ERR(x) do { std::cout << \"[Error] \" << x << std::endl;} while (0)\n+\n+namespace {\n+\n+const char kDbusOfonoService[] = \"org.ofono\";\n+const char kDbusOfonoModemManager[] = \"org.ofono.Manager\";\n+const char kDbusOfonoModem[] = \"org.ofono.Modem\";\n+const char kDbusOfonoVoiceCallManager[] = \"org.ofono.VoiceCallManager\";\n+const char kDbusOfonoVoiceCall[] = \"org.ofono.VoiceCall\";\n+const char kDbusOfonoSimManager[] = \"org.ofono.SimManager\";\n+\n+const char kCallStateInit[] = \"init\";\n+const char kCallStateActive[] = \"active\";\n+const char kCallStateHeld[] = \"held\";\n+const char kCallStateDialing[] = \"dialing\";\n+const char kCallStateAlerting[] = \"alerting\";\n+const char kCallStateIncoming[] = \"incoming\";\n+const char kCallStateWaiting[] = \"waiting\";\n+const char kCallStateDisconnected[] = \"disconnected\";\n+const char kCallStateConference[] = \"conference\";\n+\n+}  // namespace\n+\n+//////////////////////////////////////////////////////////////////////////////\n+// TelephonyBackend, DBUS/signal handling\n+///////////////////////////////////////////////////////////////////////////////\n+\n+TelephonyBackend::TelephonyBackend(TelephonyInstance* instance)\n+    : instance_(instance), cancellable_(NULL), default_service_(NULL),\n+    active_call_(NULL) {\n+}\n+\n+TelephonyBackend::~TelephonyBackend() {\n+  DisableSignalHandlers();\n+  for (auto i : calls_)\n+    delete i;\n+  for (auto i : services_)\n+    delete i;\n+  for (auto i : removed_calls_)\n+    delete i;\n+}\n+\n+void TelephonyBackend::SetDBusSignalHandler(const gchar* iface,\n+    const gchar* name, const gchar* obj, GDBusSignalCallback cb,\n+    gpointer user_data) {\n+  GDBusConnection* dbus_conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, NULL);\n+  guint handle = g_dbus_connection_signal_subscribe(dbus_conn, NULL,\n+    iface, name, obj, NULL, G_DBUS_SIGNAL_FLAGS_NONE, cb, user_data, NULL);\n+  dbus_listeners_.push_back(handle);\n+}\n+\n+GVariant* TelephonyBackend::SyncDBusCall(const gchar* object,\n+    const gchar* interface, const gchar* method, GVariant* parameters,\n+    GError** error) {\n+  GDBusConnection* dbus_conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, NULL);\n+  return g_dbus_connection_call_sync(dbus_conn, kDbusOfonoService,\n+    object, interface, method, parameters,\n+    NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);\n+}\n+\n+void TelephonyBackend::AsyncDBusCall(const gchar* object,\n+    const gchar* interface, const gchar* method, GVariant* parameters,\n+    GAsyncReadyCallback callback, gpointer user_data) {\n+  GDBusConnection* dbus_conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, NULL);\n+  g_dbus_connection_call(dbus_conn, kDbusOfonoService,\n+    object, interface, method, parameters,\n+    NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, callback, user_data);\n+}\n+\n+void TelephonyBackend::EnableSignalHandlers() {\n+  SetDBusSignalHandler(kDbusOfonoModemManager, \"ModemAdded\", NULL,\n+    SignalHandler, this);\n+  SetDBusSignalHandler(kDbusOfonoModemManager, \"ModemRemoved\", NULL,\n+    SignalHandler, this);\n+  SetDBusSignalHandler(kDbusOfonoModem, \"PropertyChanged\", NULL,\n+    SignalHandler, this);\n+\n+  SetDBusSignalHandler(kDbusOfonoVoiceCallManager, \"CallAdded\", NULL,\n+    SignalHandler, this);\n+  SetDBusSignalHandler(kDbusOfonoVoiceCallManager, \"CallRemoved\", NULL,\n+    SignalHandler, this);\n+  SetDBusSignalHandler(kDbusOfonoVoiceCallManager, \"PropertyChanged\", NULL,\n+    SignalHandler, this);\n+  SetDBusSignalHandler(kDbusOfonoVoiceCall, \"PropertyChanged\", NULL,\n+    SignalHandler, this);\n+  SetDBusSignalHandler(kDbusOfonoVoiceCall, \"DisconnectReason\", NULL,\n+    SignalHandler, this);\n+}\n+\n+// Called when the last signal listener is removed.\n+void TelephonyBackend::DisableSignalHandlers() {\n+  GDBusConnection* dbus_conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, NULL);\n+  for (int i = 0; i < dbus_listeners_.size(); i++) {\n+    g_dbus_connection_signal_unsubscribe(dbus_conn, dbus_listeners_[i]);\n+  }\n+  dbus_listeners_.clear();\n+}\n+\n+void TelephonyBackend::SignalHandler(GDBusConnection* connection,\n+    const gchar* sender, const gchar* object,\n+    const gchar* interface, const gchar* signal,\n+    GVariant* parameters, gpointer user_data) {\n+  TelephonyBackend* backend = static_cast<TelephonyBackend*>(user_data);\n+  if (!backend) {\n+    LOG_ERR(\"SignalHandler: failed to get backend\");\n+    return;\n+  }\n+  if (!strcmp(interface, kDbusOfonoModemManager)) {\n+    if (!strcmp(signal, \"ModemAdded\")) {\n+      backend->OnModemAdded(object, parameters);\n+    } else if (!strcmp(signal, \"ModemRemoved\")) {\n+      backend->OnModemRemoved(object, parameters);\n+    }\n+  } else if (!strcmp(interface, kDbusOfonoModem)) {\n+      backend->OnModemChanged(object, parameters);\n+  } else if (!strcmp(interface, kDbusOfonoVoiceCallManager)) {\n+    if (!strcmp(signal, \"CallAdded\")) {\n+      backend->OnCallAdded(object, parameters);\n+    } else if (!strcmp(signal, \"CallRemoved\")) {\n+      backend->OnCallRemoved(object, parameters);\n+    } else if (!strcmp(signal, \"PropertyChanged\")) {\n+      backend->OnCallManagerChanged(object, parameters);\n+    }\n+  } else if (!strcmp(interface, kDbusOfonoVoiceCall)) {\n+    if (!strcmp(signal, \"PropertyChanged\")) {\n+      backend->OnCallChanged(object, parameters);\n+    } else if (!strcmp(signal, \"DisconnectReason\")) {\n+      backend->OnCallDisconnectReason(object, parameters);\n+    }\n+  }\n+}\n+\n+///////////////////////////////////////////////////////////////////////////////\n+// TelephonyService\n+///////////////////////////////////////////////////////////////////////////////\n+\n+picojson::object& TelephonyBackend::ToJson(TelephonyService* s,\n+                                           picojson::object& out) {\n+  out[\"serviceId\"] = picojson::value(s->id);\n+  out[\"name\"] = picojson::value(s->name);  // model and revision could be added\n+  out[\"serviceType\"] = picojson::value(s->type);\n+  out[\"enabled\"] = picojson::value(s->online? true : false);\n+  out[\"provider\"] = picojson::value(s->provider);\n+  out[\"protocol\"] = picojson::value(s->protocol);\n+  out[\"emergency\"] = picojson::value(s->emergency);\n+  return out;\n+}\n+\n+void TelephonyBackend::LogService(TelephonyService* s) {\n+  std::cout << \"{\\n\\tserviceId: \" << s->id;\n+  std::cout << \"\\n\\tname: \" << s->name;\n+  std::cout << \"\\n\\tenabled: \" << (s->powered && s->online ? \"true\" : \"false\");\n+  std::cout << \"\\n\\tserial: \" << s->serial;  // e.g. BT address comes here\n+  std::cout << \"\\n}\" << std::endl;\n+}\n+\n+// Return the affected JS property name\n+const char* TelephonyBackend::UpdateServiceProperty(TelephonyService* s,\n+    const char* key, GVariant* value) {\n+  if (!strcmp(key, \"Powered\")) {\n+    s->powered = g_variant_get_boolean(value);\n+    return \"enabled\";\n+  } else if (!strcmp(key, \"Online\")) {\n+    s->online = g_variant_get_boolean(value);\n+    return \"enabled\";\n+  } else if (!strcmp(key, \"Lockdown\")) {\n+    s->lockdown = g_variant_get_boolean(value);\n+    return NULL;\n+  } else if (!strcmp(key, \"Emergency\")) {\n+    s->emergency = g_variant_get_boolean(value);\n+    return \"emergency\";\n+  } else if (!strcmp(key, \"Manufacturer\")) {\n+    s->provider = g_variant_get_string(value, NULL);\n+    return \"name\";\n+  } else if (!strcmp(key, \"Name\")) {\n+    s->name = g_variant_get_string(value, NULL);\n+    return \"name\";\n+  } else if (!strcmp(key, \"Model\")) {\n+    s->model = g_variant_get_string(value, NULL);\n+    return \"name\";\n+  } else if (!strcmp(key, \"Revision\")) {\n+    s->revision = g_variant_get_string(value, NULL);\n+    return \"name\";\n+  } else if (!strcmp(key, \"Serial\")) {\n+    s->serial = g_variant_get_string(value, NULL);\n+    return \"name\";\n+  } else if (!strcmp(key, \"Type\")) {\n+    const gchar* stype = g_variant_get_string(value, NULL);\n+    if (!strcmp(stype, \"hardware\"))\n+      s->type = \"hw\";\n+    else if (!strcmp(stype, \"hfp\"))\n+      s->type = \"hfp\";\n+    else if (!strcmp(stype, \"sap\"))\n+      s->type = \"sap\";\n+    else\n+      s->type = \"unknown\";\n+    return \"type\";\n+  }\n+  return NULL;\n+}\n+\n+bool TelephonyBackend::InitService(TelephonyService* s, const std::string& sid,\n+    GVariantIter* props) {\n+  if (sid.empty() || !props) {\n+    return false;\n+  }\n+  s->id = sid;\n+  s->protocol = \"gsm\";\n+  char* key = NULL;\n+  GVariant* value = NULL;","path":"telephony/telephony_backend_ofono.cc","position":223,"original_position":223,"commit_id":"6e5474c19e6d1b542d7a19e8ba3bcb222b5963ee","original_commit_id":"6e5474c19e6d1b542d7a19e8ba3bcb222b5963ee","user":{"login":"zolkis","id":996058,"avatar_url":"https://avatars.githubusercontent.com/u/996058?v=2","gravatar_id":"","url":"https://api.github.com/users/zolkis","html_url":"https://github.com/zolkis","followers_url":"https://api.github.com/users/zolkis/followers","following_url":"https://api.github.com/users/zolkis/following{/other_user}","gists_url":"https://api.github.com/users/zolkis/gists{/gist_id}","starred_url":"https://api.github.com/users/zolkis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zolkis/subscriptions","organizations_url":"https://api.github.com/users/zolkis/orgs","repos_url":"https://api.github.com/users/zolkis/repos","events_url":"https://api.github.com/users/zolkis/events{/privacy}","received_events_url":"https://api.github.com/users/zolkis/received_events","type":"User","site_admin":false},"body":"absolutely; somehow I forgot about that.","created_at":"2014-10-02T10:45:48Z","updated_at":"2014-10-02T10:45:48Z","html_url":"https://github.com/crosswalk-project/tizen-extensions-crosswalk/pull/376#discussion_r18332333","pull_request_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/pulls/376","_links":{"self":{"href":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/pulls/comments/18332333"},"html":{"href":"https://github.com/crosswalk-project/tizen-extensions-crosswalk/pull/376#discussion_r18332333"},"pull_request":{"href":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/pulls/376"}}},"pull_request":{"url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/pulls/376","id":21446722,"html_url":"https://github.com/crosswalk-project/tizen-extensions-crosswalk/pull/376","diff_url":"https://github.com/crosswalk-project/tizen-extensions-crosswalk/pull/376.diff","patch_url":"https://github.com/crosswalk-project/tizen-extensions-crosswalk/pull/376.patch","issue_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/issues/376","number":376,"state":"open","locked":false,"title":"W3C Telephony API implementation.","user":{"login":"zolkis","id":996058,"avatar_url":"https://avatars.githubusercontent.com/u/996058?v=2","gravatar_id":"","url":"https://api.github.com/users/zolkis","html_url":"https://github.com/zolkis","followers_url":"https://api.github.com/users/zolkis/followers","following_url":"https://api.github.com/users/zolkis/following{/other_user}","gists_url":"https://api.github.com/users/zolkis/gists{/gist_id}","starred_url":"https://api.github.com/users/zolkis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zolkis/subscriptions","organizations_url":"https://api.github.com/users/zolkis/orgs","repos_url":"https://api.github.com/users/zolkis/repos","events_url":"https://api.github.com/users/zolkis/events{/privacy}","received_events_url":"https://api.github.com/users/zolkis/received_events","type":"User","site_admin":false},"body":"Implements the latest W3C Telephony API specification found at http://telephony.sysapps.org/\r\nRequires the oFono telephony middleware and the BlueZ Bluetooth middleware for working with paired phones.\r\n\r\nBUG=XWALK-1419","created_at":"2014-09-18T16:44:36Z","updated_at":"2014-10-02T10:45:48Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ea653e4e39e08b1aebd9d824fa23cb9ff10484c6","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/pulls/376/commits","review_comments_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/pulls/376/comments","review_comment_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/pulls/comments/{number}","comments_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/issues/376/comments","statuses_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/statuses/6e5474c19e6d1b542d7a19e8ba3bcb222b5963ee","head":{"label":"zolkis:master","ref":"master","sha":"6e5474c19e6d1b542d7a19e8ba3bcb222b5963ee","user":{"login":"zolkis","id":996058,"avatar_url":"https://avatars.githubusercontent.com/u/996058?v=2","gravatar_id":"","url":"https://api.github.com/users/zolkis","html_url":"https://github.com/zolkis","followers_url":"https://api.github.com/users/zolkis/followers","following_url":"https://api.github.com/users/zolkis/following{/other_user}","gists_url":"https://api.github.com/users/zolkis/gists{/gist_id}","starred_url":"https://api.github.com/users/zolkis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zolkis/subscriptions","organizations_url":"https://api.github.com/users/zolkis/orgs","repos_url":"https://api.github.com/users/zolkis/repos","events_url":"https://api.github.com/users/zolkis/events{/privacy}","received_events_url":"https://api.github.com/users/zolkis/received_events","type":"User","site_admin":false},"repo":{"id":14717787,"name":"tizen-extensions-crosswalk","full_name":"zolkis/tizen-extensions-crosswalk","owner":{"login":"zolkis","id":996058,"avatar_url":"https://avatars.githubusercontent.com/u/996058?v=2","gravatar_id":"","url":"https://api.github.com/users/zolkis","html_url":"https://github.com/zolkis","followers_url":"https://api.github.com/users/zolkis/followers","following_url":"https://api.github.com/users/zolkis/following{/other_user}","gists_url":"https://api.github.com/users/zolkis/gists{/gist_id}","starred_url":"https://api.github.com/users/zolkis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zolkis/subscriptions","organizations_url":"https://api.github.com/users/zolkis/orgs","repos_url":"https://api.github.com/users/zolkis/repos","events_url":"https://api.github.com/users/zolkis/events{/privacy}","received_events_url":"https://api.github.com/users/zolkis/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/zolkis/tizen-extensions-crosswalk","description":"","fork":true,"url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk","forks_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/forks","keys_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/teams","hooks_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/hooks","issue_events_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/issues/events{/number}","events_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/events","assignees_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/assignees{/user}","branches_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/branches{/branch}","tags_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/tags","blobs_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/git/refs{/sha}","trees_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/statuses/{sha}","languages_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/languages","stargazers_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/stargazers","contributors_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/contributors","subscribers_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/subscribers","subscription_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/subscription","commits_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/commits{/sha}","git_commits_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/git/commits{/sha}","comments_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/comments{/number}","issue_comment_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/issues/comments/{number}","contents_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/contents/{+path}","compare_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/merges","archive_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/downloads","issues_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/issues{/number}","pulls_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/pulls{/number}","milestones_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/milestones{/number}","notifications_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/labels{/name}","releases_url":"https://api.github.com/repos/zolkis/tizen-extensions-crosswalk/releases{/id}","created_at":"2013-11-26T13:34:24Z","updated_at":"2014-07-14T09:03:01Z","pushed_at":"2014-09-30T19:11:48Z","git_url":"git://github.com/zolkis/tizen-extensions-crosswalk.git","ssh_url":"git@github.com:zolkis/tizen-extensions-crosswalk.git","clone_url":"https://github.com/zolkis/tizen-extensions-crosswalk.git","svn_url":"https://github.com/zolkis/tizen-extensions-crosswalk","homepage":null,"size":2887,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"crosswalk-project:master","ref":"master","sha":"4b541673ab3a0a41f9ba9077599844867c3b0af2","user":{"login":"crosswalk-project","id":4867377,"avatar_url":"https://avatars.githubusercontent.com/u/4867377?v=2","gravatar_id":"","url":"https://api.github.com/users/crosswalk-project","html_url":"https://github.com/crosswalk-project","followers_url":"https://api.github.com/users/crosswalk-project/followers","following_url":"https://api.github.com/users/crosswalk-project/following{/other_user}","gists_url":"https://api.github.com/users/crosswalk-project/gists{/gist_id}","starred_url":"https://api.github.com/users/crosswalk-project/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/crosswalk-project/subscriptions","organizations_url":"https://api.github.com/users/crosswalk-project/orgs","repos_url":"https://api.github.com/users/crosswalk-project/repos","events_url":"https://api.github.com/users/crosswalk-project/events{/privacy}","received_events_url":"https://api.github.com/users/crosswalk-project/received_events","type":"Organization","site_admin":false},"repo":{"id":11259856,"name":"tizen-extensions-crosswalk","full_name":"crosswalk-project/tizen-extensions-crosswalk","owner":{"login":"crosswalk-project","id":4867377,"avatar_url":"https://avatars.githubusercontent.com/u/4867377?v=2","gravatar_id":"","url":"https://api.github.com/users/crosswalk-project","html_url":"https://github.com/crosswalk-project","followers_url":"https://api.github.com/users/crosswalk-project/followers","following_url":"https://api.github.com/users/crosswalk-project/following{/other_user}","gists_url":"https://api.github.com/users/crosswalk-project/gists{/gist_id}","starred_url":"https://api.github.com/users/crosswalk-project/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/crosswalk-project/subscriptions","organizations_url":"https://api.github.com/users/crosswalk-project/orgs","repos_url":"https://api.github.com/users/crosswalk-project/repos","events_url":"https://api.github.com/users/crosswalk-project/events{/privacy}","received_events_url":"https://api.github.com/users/crosswalk-project/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/crosswalk-project/tizen-extensions-crosswalk","description":"","fork":false,"url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk","forks_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/forks","keys_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/teams","hooks_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/hooks","issue_events_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/issues/events{/number}","events_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/events","assignees_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/assignees{/user}","branches_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/branches{/branch}","tags_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/tags","blobs_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/git/refs{/sha}","trees_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/statuses/{sha}","languages_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/languages","stargazers_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/stargazers","contributors_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/contributors","subscribers_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/subscribers","subscription_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/subscription","commits_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/commits{/sha}","git_commits_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/git/commits{/sha}","comments_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/comments{/number}","issue_comment_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/issues/comments/{number}","contents_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/contents/{+path}","compare_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/merges","archive_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/downloads","issues_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/issues{/number}","pulls_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/pulls{/number}","milestones_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/milestones{/number}","notifications_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/labels{/name}","releases_url":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/releases{/id}","created_at":"2013-07-08T16:54:26Z","updated_at":"2014-09-29T00:53:09Z","pushed_at":"2014-09-26T15:21:35Z","git_url":"git://github.com/crosswalk-project/tizen-extensions-crosswalk.git","ssh_url":"git@github.com:crosswalk-project/tizen-extensions-crosswalk.git","clone_url":"https://github.com/crosswalk-project/tizen-extensions-crosswalk.git","svn_url":"https://github.com/crosswalk-project/tizen-extensions-crosswalk","homepage":null,"size":9675,"stargazers_count":11,"watchers_count":11,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":49,"mirror_url":null,"open_issues_count":1,"forks":49,"open_issues":1,"watchers":11,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/pulls/376"},"html":{"href":"https://github.com/crosswalk-project/tizen-extensions-crosswalk/pull/376"},"issue":{"href":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/issues/376"},"comments":{"href":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/issues/376/comments"},"review_comments":{"href":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/pulls/376/comments"},"review_comment":{"href":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/pulls/376/commits"},"statuses":{"href":"https://api.github.com/repos/crosswalk-project/tizen-extensions-crosswalk/statuses/6e5474c19e6d1b542d7a19e8ba3bcb222b5963ee"}}}}