diff options
author | Endi S. Dewata <edewata@redhat.com> | 2011-03-05 00:21:49 -0600 |
---|---|---|
committer | Adam Young <ayoung@redhat.com> | 2011-03-06 20:50:07 -0500 |
commit | 154ed91457a258013a2f15cbbbf5adc36cf0e20a (patch) | |
tree | 7908bce7b3ad0a50e76a0886fe5d26a9497f21c8 /install/ui | |
parent | 2a6e7b5e3c8a16bf2c3e1e91bd953e7c073612f2 (diff) | |
download | freeipa-154ed91457a258013a2f15cbbbf5adc36cf0e20a.tar.gz freeipa-154ed91457a258013a2f15cbbbf5adc36cf0e20a.tar.xz freeipa-154ed91457a258013a2f15cbbbf5adc36cf0e20a.zip |
Fixed memory leak caused by IPA.error_dialog.
Ticket 1054
Diffstat (limited to 'install/ui')
-rw-r--r-- | install/ui/ipa.js | 50 | ||||
-rw-r--r-- | install/ui/test/ipa_tests.js | 6 |
2 files changed, 29 insertions, 27 deletions
diff --git a/install/ui/ipa.js b/install/ui/ipa.js index cbe009b9d..732923b68 100644 --- a/install/ui/ipa.js +++ b/install/ui/ipa.js @@ -52,10 +52,6 @@ var IPA = ( function () { that.entities_by_name = {}; - that.error_dialog = $('<div/>', { - id: 'error_dialog' - }); - that.layout = $.bbq.getState('layout'); that.layouts_dir = 'layouts'; @@ -356,6 +352,25 @@ IPA.cmd = function (name, args, options, win_callback, fail_callback, objname, c function dialog_open(xhr, text_status, error_thrown) { var that = this; + IPA.error_dialog = $('<div/>', { + id: 'error_dialog' + }); + + if (error_thrown.url) { + $('<p/>', { + text: 'URL: '+error_thrown.url + }).appendTo(IPA.error_dialog); + } + $('<p/>', { + html: error_thrown.message + }).appendTo(IPA.error_dialog); + + function close() { + IPA.error_dialog.dialog('destroy'); + IPA.error_dialog.remove(); + IPA.error_dialog = null; + } + var buttons = {}; /** @@ -365,14 +380,14 @@ IPA.cmd = function (name, args, options, win_callback, fail_callback, objname, c */ var label = IPA.messages.buttons ? IPA.messages.buttons.retry : 'Retry'; buttons[label] = function() { - IPA.error_dialog.dialog('close'); + close(); IPA.cmd(name, args, options, win_callback, fail_callback, objname, command_name); }; label = IPA.messages.buttons ? IPA.messages.buttons.cancel : 'Cancel'; buttons[label] = function() { - IPA.error_dialog.dialog('close'); + close(); if (fail_callback) { fail_callback.call(that, xhr, text_status, error_thrown); } @@ -382,17 +397,13 @@ IPA.cmd = function (name, args, options, win_callback, fail_callback, objname, c modal: true, title: error_thrown.title, width: 400, - buttons: buttons + buttons: buttons, + close: function() { + close(); + } }); } - function ajax_error_handler(xhr, text_status, error_thrown) { - IPA.error_dialog.empty(); - IPA.error_dialog.append('<p>'+error_thrown.message+'</p>'); - - dialog_open.call(this, xhr, text_status, error_thrown); - } - function error_handler(xhr, text_status, error_thrown) { hide_activity_icon(); if (!error_thrown) { @@ -419,14 +430,6 @@ IPA.cmd = function (name, args, options, win_callback, fail_callback, objname, c if (!error_thrown.title) { error_thrown.title = 'AJAX Error: '+error_thrown.name; } - ajax_error_handler.call(this, xhr, text_status, error_thrown); - } - - function http_error_handler(xhr, text_status, error_thrown) { - IPA.error_dialog.empty(); - IPA.error_dialog.append('<p>URL: '+this.url+'</p>'); - IPA.error_dialog.append('<p>'+error_thrown.message+'</p>'); - dialog_open.call(this, xhr, text_status, error_thrown); } @@ -435,9 +438,10 @@ IPA.cmd = function (name, args, options, win_callback, fail_callback, objname, c if (!data) { var error_thrown = { title: 'HTTP Error '+xhr.status, + url: this.url, message: data ? xhr.statusText : "No response" }; - http_error_handler.call(this, xhr, text_status, error_thrown); + dialog_open.call(this, xhr, text_status, error_thrown); } else if (data.error) { error_handler.call(this, xhr, text_status, /* error_thrown */ { diff --git a/install/ui/test/ipa_tests.js b/install/ui/test/ipa_tests.js index 41163df18..9385a3915 100644 --- a/install/ui/test/ipa_tests.js +++ b/install/ui/test/ipa_tests.js @@ -155,10 +155,8 @@ test("Testing successful IPA.cmd().", function() { "Checking ajax invocation counter" ); - var dialog = IPA.error_dialog.parent('.ui-dialog'); - ok( - !dialog.length, + !IPA.error_dialog, "The dialog box is not created." ); @@ -284,7 +282,7 @@ test("Testing unsuccessful IPA.cmd().", function() { ); ok( - !IPA.error_dialog.dialog('isOpen'), + !IPA.error_dialog, "After cancel, the dialog box is closed." ); |