зеркало из https://github.com/mozilla/pjs.git
Back out changeset 28dd46b9ee31 (bug 679031) because the test is failing on all the buildbots.
This commit is contained in:
Родитель
43d3be08d2
Коммит
566a741a74
|
@ -1,49 +0,0 @@
|
|||
# ***** BEGIN LICENSE BLOCK *****
|
||||
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License Version
|
||||
# 1.1 (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
# for the specific language governing rights and limitations under the
|
||||
# License.
|
||||
#
|
||||
# The Original Code is the Mozilla Browser code.
|
||||
#
|
||||
# The Initial Developer of the Original Code is
|
||||
# Netscape Communications Corporation.
|
||||
# Portions created by the Initial Developer are Copyright (C) 2011
|
||||
# the Initial Developer. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
# Jason Orendorff <jorendorff@mozilla.com>
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the terms of
|
||||
# either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
# in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
# of those above. If you wish to allow use of your version of this file only
|
||||
# under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
# use your version of this file under the terms of the MPL, indicate your
|
||||
# decision by deleting the provisions above and replace them with the notice
|
||||
# and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
# the provisions above, a recipient may use your version of this file under
|
||||
# the terms of any one of the MPL, the GPL or the LGPL.
|
||||
#
|
||||
# ***** END LICENSE BLOCK *****
|
||||
|
||||
DEPTH = ../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(topsrcdir)/config/config.mk
|
||||
|
||||
PARALLEL_DIRS += \
|
||||
debugger \
|
||||
$(NULL)
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
|
@ -1,52 +0,0 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Mozilla Foundation
|
||||
* Portions created by the Initial Developer are Copyright (C) 2011
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Dave Camp <dcamp@mozilla.com>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "nsISupports.idl"
|
||||
|
||||
/**
|
||||
* Do not use this interface. Instead, write:
|
||||
* Components.utils.import("resource://gre/modules/jsdebugger.jsm");
|
||||
*/
|
||||
[scriptable, uuid(2fc14cc6-4ed0-4bbf-a7dd-e535bf088eb5)]
|
||||
interface IJSDebugger : nsISupports
|
||||
{
|
||||
/**
|
||||
* Define the global Debugger constructor.
|
||||
*/
|
||||
[implicit_jscontext]
|
||||
void addClass();
|
||||
};
|
|
@ -1,111 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2; -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* The Mozilla Foundation <http://www.mozilla.org/>.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2011
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Dave Camp <dcamp@mozilla.com>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "JSDebugger.h"
|
||||
#include "nsIXPConnect.h"
|
||||
#include "nsThreadUtils.h"
|
||||
#include "jsapi.h"
|
||||
#include "jsobj.h"
|
||||
#include "jsgc.h"
|
||||
#include "jsfriendapi.h"
|
||||
#include "jsdbgapi.h"
|
||||
#include "mozilla/ModuleUtils.h"
|
||||
#include "nsServiceManagerUtils.h"
|
||||
#include "nsMemory.h"
|
||||
|
||||
#define JSDEBUGGER_CONTRACTID \
|
||||
"@mozilla.org/jsdebugger;1"
|
||||
|
||||
#define JSDEBUGGER_CID \
|
||||
{ 0x0365cbd5, 0xd46e, 0x4e94, { 0xa3, 0x9f, 0x83, 0xb6, 0x3c, 0xd1, 0xa9, 0x63 } }
|
||||
|
||||
namespace mozilla {
|
||||
namespace jsdebugger {
|
||||
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(JSDebugger)
|
||||
|
||||
NS_IMPL_ISUPPORTS1(JSDebugger, IJSDebugger)
|
||||
|
||||
JSDebugger::JSDebugger()
|
||||
{
|
||||
}
|
||||
|
||||
JSDebugger::~JSDebugger()
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
JSDebugger::AddClass(JSContext *cx)
|
||||
{
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIXPConnect> xpc = do_GetService(nsIXPConnect::GetCID(), &rv);
|
||||
|
||||
JSObject* global = JS_GetGlobalForScopeChain(cx);
|
||||
if (!global) {
|
||||
return NS_ERROR_NOT_AVAILABLE;
|
||||
}
|
||||
|
||||
if (!JS_DefineDebuggerObject(cx, global)) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
NS_DEFINE_NAMED_CID(JSDEBUGGER_CID);
|
||||
|
||||
static const mozilla::Module::CIDEntry kJSDebuggerCIDs[] = {
|
||||
{ &kJSDEBUGGER_CID, false, NULL, mozilla::jsdebugger::JSDebuggerConstructor },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
static const mozilla::Module::ContractIDEntry kJSDebuggerContracts[] = {
|
||||
{ JSDEBUGGER_CONTRACTID, &kJSDEBUGGER_CID },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
static const mozilla::Module kJSDebuggerModule = {
|
||||
mozilla::Module::kVersion,
|
||||
kJSDebuggerCIDs,
|
||||
kJSDebuggerContracts
|
||||
};
|
||||
|
||||
NSMODULE_DEFN(jsdebugger) = &kJSDebuggerModule;
|
|
@ -1,62 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2; -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* The Mozilla Foundation <http://www.mozilla.org/>.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2011
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Dave Camp <dcamp@mozilla.com>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef COMPONENTS_JSDEBUGGER_H
|
||||
#define COMPONENTS_JSDEBUGGER_H
|
||||
|
||||
#include "IJSDebugger.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace jsdebugger {
|
||||
|
||||
class JSDebugger : public IJSDebugger
|
||||
{
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_IJSDEBUGGER
|
||||
|
||||
JSDebugger();
|
||||
|
||||
private:
|
||||
~JSDebugger();
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,75 +0,0 @@
|
|||
# ***** BEGIN LICENSE BLOCK *****
|
||||
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License Version
|
||||
# 1.1 (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
# for the specific language governing rights and limitations under the
|
||||
# License.
|
||||
#
|
||||
# The Original Code is mozilla.org code.
|
||||
#
|
||||
# The Initial Developer of the Original Code is
|
||||
# The Mozilla Foundation <http://www.mozilla.org/>.
|
||||
# Portions created by the Initial Developer are Copyright (C) 2011
|
||||
# the Initial Developer. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
# Dave Camp <dcamp@mozilla.com>
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the terms of
|
||||
# either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
# in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
# of those above. If you wish to allow use of your version of this file only
|
||||
# under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
# use your version of this file under the terms of the MPL, indicate your
|
||||
# decision by deleting the provisions above and replace them with the notice
|
||||
# and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
# the provisions above, a recipient may use your version of this file under
|
||||
# the terms of any one of the MPL, the GPL or the LGPL.
|
||||
#
|
||||
# ***** END LICENSE BLOCK *****
|
||||
|
||||
DEPTH = ../../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
relativesrcdir = js/ductwork/debugger
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
MODULE = jsdebugger
|
||||
MODULE_NAME = jsdebugger
|
||||
GRE_MODULE = 1
|
||||
|
||||
LIBRARY_NAME = jsdebugger
|
||||
XPIDL_MODULE = jsdebugger
|
||||
LIBXUL_LIBRARY = 1
|
||||
EXPORT_LIBRARY = 1
|
||||
IS_COMPONENT = 1
|
||||
|
||||
CPPSRCS = \
|
||||
JSDebugger.cpp \
|
||||
$(NULL)
|
||||
|
||||
EXTRA_DSO_LDOPTS += \
|
||||
$(MOZ_COMPONENT_LIBS) \
|
||||
$(MOZ_JS_LIBS) \
|
||||
$(NULL)
|
||||
|
||||
EXTRA_JS_MODULES = \
|
||||
jsdebugger.jsm \
|
||||
$(NULL)
|
||||
|
||||
XPIDLSRCS = \
|
||||
IJSDebugger.idl \
|
||||
$(NULL)
|
||||
|
||||
XPCSHELL_TESTS = tests
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
|
@ -1,55 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2; -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is js-ctypes.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* The Mozilla Foundation <http://www.mozilla.org/>.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2011
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Jason Orendorff <jorendorff@mozilla.com>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
let EXPORTED_SYMBOLS = [ "Debugger" ];
|
||||
|
||||
/*
|
||||
* This is the js module for Debugger. Import it like so:
|
||||
* Components.utils.import("resource://gre/modules/jsdebugger.jsm");
|
||||
*
|
||||
* This will create a 'Debugger' object, which provides an interface to debug
|
||||
* JavaScript code running in other compartments in the same process, on the
|
||||
* same thread.
|
||||
*
|
||||
* For documentation on the API, see:
|
||||
* https://wiki.mozilla.org/Debugger
|
||||
*/
|
||||
|
||||
// Initialize the Debugger object. You do not need to do this yourself.
|
||||
const init = Components.classes["@mozilla.org/jsdebugger;1"].createInstance(Components.interfaces.IJSDebugger);
|
||||
init.addClass();
|
|
@ -1,17 +0,0 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
"use strict";
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
const Cu = Components.utils;
|
||||
const Cr = Components.results;
|
||||
|
||||
function testGlobal(aName) {
|
||||
let systemPrincipal = Cc["@mozilla.org/systemprincipal;1"]
|
||||
.createInstance(Ci.nsIPrincipal);
|
||||
|
||||
let sandbox = Cu.Sandbox(systemPrincipal);
|
||||
Cu.evalInSandbox("this.__name = '" + aName + "'", sandbox);
|
||||
return sandbox;
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
function run_test()
|
||||
{
|
||||
Components.utils.import("resource://gre/modules/jsdebugger.jsm");
|
||||
var g = testGlobal("test1");
|
||||
|
||||
var dbg = new Debugger();
|
||||
dbg.addDebuggee(g);
|
||||
dbg.onDebuggerStatement = function(aFrame) {
|
||||
let args = aFrame["arguments"];
|
||||
try {
|
||||
args[0];
|
||||
do_check_true(true);
|
||||
} catch(ex) {
|
||||
do_check_true(false);
|
||||
}
|
||||
};
|
||||
|
||||
g.eval("function stopMe(arg) {debugger;}");
|
||||
|
||||
g2 = testGlobal("test2");
|
||||
g2.g = g;
|
||||
g2.eval("(" + function createBadEvent() {
|
||||
let parser = Components.classes["@mozilla.org/xmlextras/domparser;1"].createInstance(Components.interfaces.nsIDOMParser);
|
||||
let doc = parser.parseFromString("<foo></foo>", "text/xml");
|
||||
g.stopMe(doc.createEvent("MouseEvent"));
|
||||
} + ")()");
|
||||
|
||||
dbg.enabled = false;
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
[DEFAULT]
|
||||
head = head_dbg.js
|
||||
tail =
|
||||
|
||||
[test_nativewrappers.js]
|
|
@ -46,7 +46,6 @@ skip-if = os == "android"
|
|||
[include:intl/uconv/tests/unit/xpcshell.ini]
|
||||
[include:netwerk/test/unit/xpcshell.ini]
|
||||
[include:netwerk/test/httpserver/test/xpcshell.ini]
|
||||
[include:js/ductwork/debugger/tests/xpcshell.ini]
|
||||
[include:js/jetpack/tests/unit/xpcshell.ini]
|
||||
[include:js/src/xpconnect/tests/unit/xpcshell.ini]
|
||||
[include:modules/libjar/test/unit/xpcshell.ini]
|
||||
|
|
|
@ -142,7 +142,6 @@ COMPONENT_LIBS += \
|
|||
composer \
|
||||
jetpack_s \
|
||||
telemetry \
|
||||
jsdebugger \
|
||||
storagecomps \
|
||||
$(NULL)
|
||||
|
||||
|
|
|
@ -273,7 +273,6 @@
|
|||
SERVICES_CRYPTO_MODULE \
|
||||
MOZ_APP_COMPONENT_MODULES \
|
||||
MODULE(nsTelemetryModule) \
|
||||
MODULE(jsdebugger) \
|
||||
/* end of list */
|
||||
|
||||
#define MODULE(_name) \
|
||||
|
|
|
@ -683,12 +683,6 @@ MAKEFILES_jsreflect="
|
|||
toolkit/components/reflect/Makefile
|
||||
"
|
||||
|
||||
MAKEFILES_jsductwork="
|
||||
js/ductwork/Makefile
|
||||
js/ductwork/debugger/Makefile
|
||||
js/ductwork/debugger/tests/Makefile
|
||||
"
|
||||
|
||||
MAKEFILES_libpr0n="
|
||||
modules/libpr0n/Makefile
|
||||
modules/libpr0n/build/Makefile
|
||||
|
@ -756,7 +750,6 @@ add_makefiles "
|
|||
$MAKEFILES_jsdebugger
|
||||
$MAKEFILES_jsctypes
|
||||
$MAKEFILES_jsreflect
|
||||
$MAKEFILES_jsductwork
|
||||
$MAKEFILES_content
|
||||
$MAKEFILES_layout
|
||||
$MAKEFILES_libimg
|
||||
|
|
|
@ -224,8 +224,6 @@ tier_platform_dirs += services/crypto/component
|
|||
|
||||
tier_platform_dirs += startupcache
|
||||
|
||||
tier_platform_dirs += js/ductwork
|
||||
|
||||
ifdef APP_LIBXUL_STATICDIRS
|
||||
# Applications can cheat and ask for code to be
|
||||
# built before libxul so libxul can be linked against it.
|
||||
|
|
Загрузка…
Ссылка в новой задаче